Соскоб с помощью Xpath - PullRequest
       0

Соскоб с помощью Xpath

0 голосов
/ 05 марта 2020

Итак, я хочу получить имя каждого игрока во всех футбольных клубах Премьер-лиги от Transfermarkt. Страница, которую я пытаюсь сделать, в качестве теста: https://www.transfermarkt.co.uk/ederson/profil/spieler/238223

Я нашел Xpath следующим образом:

//*[@id="main"]/div[10]/div[1]/div[2]/div[2]/div[2]/div[2]/table/tbody/tr[1]/td

Имейте в виду, что Я должен использовать Xpath из-за структуры кода Html и того, что я должен сделать For l oop для всех игроков в клубе, для всех клубов в Премьер-лиге. Я уже получил ссылки через этот код:

# Create empty list for player link
playerLink1 = []
playerLink2 = []
playerLink3 = []
#For each team link page...
for i in range(len(Full_Links)):
    #...Download the team page and process the html code...
    squadPage = requests.get(Full_Links[i], headers=headers)
    squadTree = squadPage.text
    SquadSoup = BeautifulSoup(squadTree,'html.parser')

    #...Extract the player links...

    playerLocation = SquadSoup.find("div", {"class":"responsive-table"}).find_all("a",{"class":"spielprofil_tooltip"})

    for a in playerLocation:
        playerLink1.append(a['href'])
        [playerLink2.append(x) for x in playerLink1 if x not in playerLink2] 

    #...For each player link within the team page...
        for j in range(len(playerLink2)):

    #...Save the link, complete with domain...
            temp2 = "https://www.transfermarkt.co.uk" + playerLink2[j]
    #...Add the finished link to our teamLinks list...
            playerLink3.append(temp2)

Ссылки находятся в переменной списка под названием "playerLink3_u"

Как я могу это сделать?

1 Ответ

2 голосов
/ 05 марта 2020

Я не уверен, как получить имя с XPath. Вы уже импортировали BS4, поэтому я написал некоторый код для получения имени игрока по указанному вами URL.

import requests
from bs4 import BeautifulSoup

request_page = requests.get("http://www.transfermarkt.co.uk/ederson/profil/spieler/238223", headers={'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.37"})
page_soup = BeautifulSoup(request_page.text, 'html.parser')
player_table = page_soup.find('table', {'class': 'auflistung'})
table_data = player_table.findAll('td')

print('Name: ', table_data[0].text)
print('Date Of Birth: ', table_data[1].text)
print('Place Of Birth: ', table_data[2].text)

Это вернет имя, date_of_birth и place_of_birth.

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