2016-07-24 16 views
0

Wie kann ich eine absolute URL von einer absoluten URL und einer relativen URL erhalten? Die relative URL stammt von der href eines Links.Der Versuch, zwei URLs zusammenzufügen, um eine URL zu erhalten

Das, was ich versucht:

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

Bitte geben Sie ein Beispiel 'mainurl' und' producturl' da dies eine Aufgabe der String-Verkettung zu sein scheint und URLs nicht spezifisch. – albert

+0

Die Ausgabe kommt als Insignia "(" http://www.bestbuy.ca "," Insignia 30 "18 Cu. Ft. Top Gefrierschrank Kühlschrank (NS-RTM18WH7-C) - Weiß)" Ich brauche die ganze Sache Die Haupt-URL lautet "http://www.bestbuy.ca" und die Produkt-URL basiert auf der URL, die im Klassentitel zu finden ist. – nobb666

+0

mainurl ist gegeben: "http://www.bestbuy.ca" und producturl ist eine Suppe Objekt: Insignia 30" 18 Cu. Ft. Top Freezer Refrigerator (NS-RTM18WH7-C) - White

Antwort

0

Sie verwenden sollten, [ 'href'] auf beautifulsoup Objekt den Link als String zu erhalten. Dann concatanate.

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

oder

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

Das funktioniert perfekt. Vielen Dank – nobb666

1

Wie @ keiv.fly bereits gebucht, müssen Sie die hrefattribute value eines Links zu bekommen. Dann, anstelle der regulären String-Verkettung, verwenden Sie .urljoin(), um die Basis-URL mit der relativen URL des Links zu kombinieren, um eine absolute URL zu erzeugen.

ich den Weg auch verbessern möchten Sie den Link lokalisieren:

from urllib.parse import urljoin 

product_url = soup.select_one('h4.prod-title a')["href"] 
product_url = urljoin(mainurl, product_url)