2016-07-24 10 views
0

絶対URLと相対URLから絶対URLを取得するにはどうすればよいですか?相対URLは、リンクのhrefから得られます。URLを2つ追加して1つのURLを取得しようとしています

import urllib 
import urllib.request 
import requests 
from urllib.parse import urljoin 
from bs4 import BeautifulSoup 

mainurl = "http://www.bestbuy.ca" 
theurl = "http://www.bestbuy.ca/en-CA/category/top-freezer-  refrigerators/34734.aspx?type=product&page=1&pageSize=96" 
thepage = urllib.request.urlopen(theurl) 
soup = BeautifulSoup(thepage, "html.parser") 

producturl = soup.find('h4',{"class":"prod-title"}).find('a') 

print (producturl) 

fullurl = (mainurl,producturl) 

print(fullurl) 
+0

これは文字列の連結のタスクおよびURLに固有のものではないように思わので、 'mainurl'と' producturl'の例を提供してください。 – albert

+0

出力はInsignia "( 'http://www.bestbuy.ca'、 'Insignia 30' 18 Cu。Ft。Top冷凍冷蔵庫(NS-RTM18WH7-C) - 白 ')として出てきます。主なURLは「http://www.bestbuy.ca」で、商品のURLはclass-titleにあるURLに基​​づいています。 – nobb666

+0

mainurlが与えられます: "http://www.bestbuy.ca"、producturlはスープオブジェクトです:Insignia 30" 18 Cu. Ft. Top Freezer Refrigerator (NS-RTM18WH7-C) - White

答えて

0

あなたは文字列としてリンクを取得するためにbeautifulsoupオブジェクトに[「のhref」]を使用する必要があります。私が試したものを

これ。それからちょうどconcatanate。すでに掲載の@ keiv.flyとして

fullurl = mainurl + soup.find('h4',{"class":"prod-title"}).find('a')['href'] 

または

fullurl = mainurl + producturl['href'] 
+0

これは完璧に動作します。ありがとう – nobb666

1

、あなたはリンクのhrefattribute valueを取得する必要があります。次に、通常の文字列連結ではなくの代わりに、.urljoin()を使用して、ベースURLとリンクの相対URLを結合して絶対URLを生成します。

私はまた、あなたがリンクを見つけている方法を改善します:

from urllib.parse import urljoin 

product_url = soup.select_one('h4.prod-title a')["href"] 
product_url = urljoin(mainurl, product_url) 
関連する問題