Как вытащить только определенные поля с BeautifulSoup - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь напечатать все поля, в которых есть Англия, текущий код, который у меня есть, печатает все национальности в текстовый файл для меня, но я хочу, чтобы печатались только поля Англии.страница, которую я перетаскиваю, это https://www.premierleague.com/players

import requests
from bs4 import BeautifulSoup

r=requests.get("https://www.premierleague.com/players")
c=r.content
soup=BeautifulSoup(c, "html.parser")
players = open("playerslist.txt", "w+")


for playerCountry in soup.findAll("span", {"class":"playerCountry"}):
    players.write(playerCountry.text.strip())
    players.write("\n")

Ответы [ 2 ]

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

Или вы можете просто использовать pandas.read_html() и пару строк кода:

import pandas as pd

df = pd.read_html("https://www.premierleague.com/players")[0]
print(df.loc[df['Nationality'] != 'England'])

Печать:

               Player    Position                       Nationality
2        Charlie Adam  Midfielder                          Scotland
3              Adrián  Goalkeeper                             Spain
4        Adrien Silva  Midfielder                          Portugal
5     Ibrahim Afellay  Midfielder                       Netherlands
6         Benik Afobe     Forward  The Democratic Republic Of Congo
7       Sergio Agüero     Forward                         Argentina
9    Soufyan Ahannach  Midfielder                       Netherlands
10       Ahmed Hegazi    Defender                             Egypt
11         Nathan Aké    Defender                       Netherlands
14  Toby Alderweireld    Defender                           Belgium
15       Aleix García  Midfielder                             Spain
17           Ali Gabr    Defender                             Egypt
18         Allan Nyom    Defender                          Cameroon
19        Allan Souza  Midfielder                            Brazil
20          Joe Allen  Midfielder                             Wales
22      Marcos Alonso    Defender                             Spain
23        Paulo Alves  Midfielder                          Portugal
24     Daniel Amartey  Midfielder                             Ghana
25         Jordi Amat    Defender                             Spain
27       Ethan Ampadu    Defender                             Wales
28     Nordin Amrabat     Forward                           Morocco
0 голосов
/ 02 февраля 2019

Просто нужно проверить, не равно ли оно «Англия», и если это так, перейти к следующему пункту в списке:

import requests
from bs4 import BeautifulSoup

r=requests.get("https://www.premierleague.com/players")
c=r.content
soup=BeautifulSoup(c, "html.parser")
players = open("playerslist.txt", "w+")


for playerCountry in soup.findAll("span", {"class":"playerCountry"}):
    if playerCountry.text.strip() != 'England':
        continue
    players.write(playerCountry.text.strip())
    players.write("\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...