Python - bs4 - webscraping - Невозможно получить весь URL с сайта - PullRequest
1 голос
/ 23 февраля 2020

Я пытаюсь создать ссылку на URL-адрес объявления с веб-сайта. У меня есть следующий код в блокноте jupyter

from bs4 import BeautifulSoup
import requests
link = "https://www.marktplaats.nl/l/auto-s/bmw/p/1/"
data = requests.get(link)
soup = BeautifulSoup(data.content,"html.parser")
​
car1 = soup.findAll('li',{'class':'mp-Listing mp-Listing--list-item'})[0]
​
car1.a['href']

Когда я запускаю этот код, я получаю следующий URL:

'/a/auto-s/bmw/a1322384400-bmw-x5-s-drive-executive-automaat-leder-navigatie-nr-038.html'

Я думаю, что это относительный URL, а не полный URL. Когда я осматриваю страницу, я вижу этот URL, но когда я наведу на него мышь, я вижу весь URL. Я хотел бы очистить весь URL, кто-нибудь может мне помочь?

Я добавил два изображения: одно показывает сокращенный URL, а другое - полный URL

Сокращенное изображение URL:

Полное изображение URL:

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Если вы используете Python 3, вы можете использовать urllib.parse.urljoin() до , присоединить базовый URL в link и путь от car1.a['href'].

car1.a['href'] - это относительный путь, поскольку абсолютные URI начинаются с протокола / схемы или с двойного sla * sh //.

Если url является абсолютным URL (то есть начиная с // или scheme://), ...

Начальный сингл / in /a/auto-s/... указывает, что ссылка относится к root хоста, а не к текущему пути страницы, на которой вы ее видите. (Путь к текущей странице /l/auto-s/bmw/p/1/.)

Собираем tha вместе:

>>> import urllib
>>>
>>> car_url = urllib.parse.urljoin(link, car1.a['href'])
>>> car_url
'https://www.marktplaats.nl/a/auto-s/bmw/a1322384400-bmw-x5-s-drive-executive-automaat-leder-navigatie-nr-038.html'
>>>
>>> car_page = requests.get(car_url).content
>>> car_soup = BeautifulSoup(car_page, 'html.parser')
>>> car_soup.title.text
'≥ BMW X5 S-Drive Executive Automaat Leder Navigatie - Nr 038 - BMW - Marktplaats.nl'
>>>
0 голосов
/ 23 февраля 2020

Помещаю свой ответ в комментарий, чтобы вопрос можно было пометить как ответивший :). Это не относительный URL, а абсолютный (так как он начинается с папки root, начиная с forward sla sh). Чтобы получить полный URL, просто добавьте доменное имя впереди так "https://www.martkplaats.nl" + car1.a ['href']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...