Как очистить URL-адрес от html, если href - это файловый каталог - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в парсинге веб-страниц. Я пытаюсь извлечь список URL-адресов с веб-страницы, но href содержит каталог вместо URL-адреса. Есть ли способ получить вместо этого URL-адреса?

Мой код:

url='https://www.goodreads.com/shelf/show/bestsellers'
elements = requests.get(url).text

soup = BeautifulSoup(elements, "html.parser")
for link in soup.findAll('a',attrs={'class':"leftAlignedImage"}):
    print (link['href'])

Вывод:

/book/show/5060378-the-girl-who-played-with-fire
/book/show/968.The_Da_Vinci_Code
/book/show/4667024-the-help
/book/show/2429135.The_Girl_with_the_Dragon_Tattoo
...

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Это скорее комментарий к OP (@adib), чем ответ. Ваш подход мне нравится, но вы можете избежать необходимости делать replace, разделив URL-адрес на 2 части в начале:

from bs4 import BeautifulSoup
import requests

baseUrl = 'https://www.goodreads.com'
path = '/shelf/show/bestsellers'
page = requests.get(baseUrl + path)

soup = BeautifulSoup(page.text, "html.parser")
for link in soup.findAll('a',attrs={'class':"leftAlignedImage"}):
    print (baseUrl + link['href'])

Это даст вам следующие результаты:

https://www.goodreads.com/book/show/5060378-the-girl-who-played-with-fire
https://www.goodreads.com/book/show/968.The_Da_Vinci_Code
https://www.goodreads.com/book/show/4667024-the-help
0 голосов
/ 28 мая 2020

Исправлено с заменой, не уверен, что есть решение получше.

print(link['href'].replace('/book/show/','https://www.goodreads.com/book/show/'))
...