2016-07-24 57 views
0

如何從絕對URL和相對URL獲得絕對URL?相對URL來自鏈接的href試圖將兩個URL一起添加到一個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

請提供mainurl'和'producturl'的'一個例子,因爲這似乎是字符串連接的任務,而不是具體到URL。 – albert

+0

輸出爲Insignia「('http://www.bestbuy.ca','Insignia 30'18 Cu。Ft。Top Freezer冰箱(NS-RTM18WH7-C) - 白色')」我需要整件事主要網址是「http://www.bestbuy.ca,產品網址是基於在課程標題中找到的網址。 – nobb666

+0

mainurl給出:「http://www.bestbuy.ca」和producturl是一個湯對象:Insignia 30" 18 Cu. Ft. Top Freezer Refrigerator (NS-RTM18WH7-C) - White

回答

0

您應該使用[ 'href' 屬性] beautifulsoup對象上,以獲得鏈接字符串。然後只是concatanate。

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

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

這是完美的。謝謝 – nobb666

1

正如@ keiv.fly已經發布,你需要獲得一個鏈接的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) 
相關問題