Beautiful Soup - добыча после дел - PullRequest
0 голосов
/ 11 апреля 2019
from bs4 import BeautifulSoup as Soup,Tag
import requests

url=r"https://en.wikipedia.org/wiki/Lists_of_tourist_attractions"

r = requests.get(url)
soup = Soup(r.content,"html.parser" )

for link in soup.find_all('a', href=True):
    print (link['href'])

for ul in soup.findAll('div'):
    print(ul.text)
    for li in ul.findAll('li'):
        print(li.text)

Выше приведен рабочий код.Это может быть использовано на любых страницах Википедии.Проблема: я пытаюсь получить href и название рядом друг с другом.Я не могу получить это.

во 2-м цикле for, в котором все содержимое занято как div и печатается в одну строку.

как я могу напечатать заголовок и вспомогательный атрибут href друг другу (li содержимое)

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Попробуйте это:

for link in soup.find_all('a', href=True):
    print (link.get('href') +'->' + link.get('title'))

Кстати, я бы предложил использовать функцию wikipedia API или special:export для доступа к данным.

https://www.mediawiki.org/wiki/API:Main_page
https://en.wikipedia.org/wiki/Special:Export

1 голос
/ 11 апреля 2019

Может быть, это не то, что вы ищете, но вы можете попробовать это. Я сделал небольшую модификацию для вашей петли for:

for lnk in soup.findAll('a', href=True):
    title = (lnk.text)
    link = (lnk['href'])
    if title != '':
        print ("Title: {}, Link: https://en.wikipedia.org{}".format(title, link))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...