BeautifulSoup найти все заголовки и ссылки внутри div> span> a - PullRequest
0 голосов
/ 22 февраля 2019

Я бы хотел найти весь текст href и title (то есть названия клубов с соответствующей ссылкой) внутри div.Я получил следующий код.Как мне извлечь каждый предмет здесь?

Мой код:

import requests
import xlrd
import xlsxwriter
from bs4 import BeautifulSoup

list0 = list(['Verein'])
list1 = list(['Verein_Link'])
list2 = list(['Zugehörige_Vereine'])
list3 = list(['Zugehörige_Vereine_Link'])

workbook = xlrd.open_workbook('url_allclubs.xlsx')
worksheet = workbook.sheet_by_name('Sheet1')
rows = worksheet.nrows

for i in range(0, rows):
    url = worksheet.cell(i, 0)
    url = str.replace(str(url), 'text:', '')
    url = url[1:-1]

    headers = {'Host': 'www.transfermarkt.de',
               'Referer': 'https://www.transfermarkt.de/jumplist/startseite/verein/27',
               'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}

    page = 'https://www.transfermarkt.de/jumplist/startseite/verein/27'
    pageTree = requests.get(url, headers=headers)
    soup = BeautifulSoup(pageTree.content, 'lxml')
    club = soup.find_all('h1')
    allclubs = soup.find_all(id='alleTemsVerein')

    list0.append(str(club[0].text))
    list1.append(str('x') + str(url))
    list2.append(str(allclubs[0]))   > this is not working yet
    list3.append(str(allclubs[0]))   > this is not working yet

book = xlsxwriter.Workbook('allclubs.xlsx')
sheet1 = book.add_worksheet()

for i, e in enumerate(list0):
    sheet1.write(i, 0, e)
for i, e in enumerate(list1):
    sheet1.write(i, 1, e)
for i, e in enumerate(list2):
    sheet1.write(i, 2, e)
for i, e in enumerate(list2):
    sheet1.write(i, 3, e)

book.close()

Вот что я получаю из своего супа из всех клубов: soup

Здесь вы можете увидеть, где найти список всех клубов: list of all clubs on the website

Как я могу углубиться в суп из всех клубов, чтобы я мог извлечь название клуба и ссылкув цикле?

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете найти все ссылки в этом div всех клубов, а затем получить их .text для заголовка и атрибут 'href' для ссылки.

import requests
from bs4 import BeautifulSoup
headers = {'Host': 'www.transfermarkt.de',
           'Referer': 'https://www.transfermarkt.de/jumplist/startseite/verein/27',
           'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}

url= 'https://www.transfermarkt.de/jumplist/startseite/verein/27'
pageTree = requests.get(url, headers=headers)
soup = BeautifulSoup(pageTree.content, 'lxml')
club = soup.find_all('h1')
allclubs = soup.find(id='alleTemsVerein')
team_links=allclubs.find_all('a')
for link in team_links:
    print(link.text,link['href'])

Вывод

FC Bayern München /fc-bayern-munchen/startseite/verein/27
FC Bayern München II /fc-bayern-munchen-ii/startseite/verein/28
FC Bayern München U19 /fc-bayern-munchen-u19/startseite/verein/1462
FC Bayern München U17 /fc-bayern-munchen-u17/startseite/verein/21058
FC Bayern München U16 /fc-bayern-munchen-u16/startseite/verein/23112
FC Bayern München UEFA U19 /fc-bayern-munchen-uefa-u19/startseite/verein/41585
FC Bayern München Jugend /fc-bayern-munchen-jugend/startseite/verein/18936

Обратите внимание, что я использовал find для всех клубов, так как есть только один div с этим идентификатором.

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