在 Python 中抓取网站(Futbin)时如何更改平台?
Posted
技术标签:
【中文标题】在 Python 中抓取网站(Futbin)时如何更改平台?【英文标题】:How to change platform when scraping a website (Futbin) in Python? 【发布时间】:2020-11-30 07:17:19 【问题描述】:我目前正在寻找从 Futbin 获取价格数据,特别是从这个页面 of player data。我已经通过以下特定代码成功地使用了 bs4:
spans = soup.find_all("span", class_="ps4_color font-weight-bold")
这会从玩家页面收集所有 PS4 价格,但我还想获得 Xbox 和 PC 价格。要在网站上执行此操作,您必须从右上角的图标中手动选择它,但据我所知,此链接指向相同的 url,但具有更新的价格数据。如何以与上述类似的方式抓取这些数据,因为我确信肯定有比使用 Selenium 或类似软件包更简单的方法。
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:要为其他平台更改页面,请在您的请求中设置cookie=
参数:
import requests
from bs4 import BeautifulSoup
url = 'https://www.futbin.com/20/players?page=1'
platforms = ['ps4', 'xone', 'pc']
for platform in platforms:
print()
print('Platform: '.format(platform))
print('-' * 80)
soup = BeautifulSoup( requests.get(url, cookies='platform': platform).content, 'html.parser' )
for s in soup.select('span.font-weight-bold'):
print(':<40 '.format(s.find_previous('a', class_="player_name_players_table").text, s.text))
打印:
Platform: ps4
--------------------------------------------------------------------------------
Lionel Messi 2.5M
Virgil van Dijk 1.82M
Cristiano Ronaldo 3.2M
Diego Maradona 4.5M
Pelé 6.65M
Kevin De Bruyne 1.95M
Virgil van Dijk 1.75M
Lionel Messi 2.18M
Robert Lewandowski 805K
Cristiano Ronaldo 3.08M
Pelé 3.35M
Kylian Mbappé 2.62M
Kevin De Bruyne 1.21M
Sadio Mané 783K
Kylian Mbappé 2.66M
Neymar Jr 3.83M
Diego Maradona 2.19M
Sadio Mané 625K
Alisson 148K
N'Golo Kanté 1.51M
Robert Lewandowski 269K
Ronaldo 0
Zinedine Zidane 7.15M
Lionel Messi 4.6M
Lionel Messi 1.4M
Alisson 143K
Mohamed Salah 459K
Raphaël Varane 847K
Karim Benzema 310K
Luis Suárez 407K
Platform: xone
--------------------------------------------------------------------------------
Lionel Messi 2.15M
Virgil van Dijk 1.65M
Cristiano Ronaldo 2.53M
Diego Maradona 4.07M
Pelé 0
Kevin De Bruyne 1.73M
Virgil van Dijk 1.6M
Lionel Messi 1.9M
Robert Lewandowski 719K
Cristiano Ronaldo 2.51M
Pelé 3.15M
Kylian Mbappé 2.27M
Kevin De Bruyne 1.02M
Sadio Mané 695K
Kylian Mbappé 2.24M
Neymar Jr 3.27M
Diego Maradona 1.61M
Sadio Mané 585K
Alisson 153K
N'Golo Kanté 1.3M
Robert Lewandowski 247K
Ronaldo 0
Zinedine Zidane 6.78M
Lionel Messi 4.26M
Lionel Messi 1.24M
Alisson 130K
Mohamed Salah 470K
Raphaël Varane 725K
Karim Benzema 272K
Luis Suárez 351K
Platform: pc
--------------------------------------------------------------------------------
Lionel Messi 3.56M
Virgil van Dijk 2.5M
Cristiano Ronaldo 3.75M
Diego Maradona 4.3M
Pelé 0
Kevin De Bruyne 2.52M
Virgil van Dijk 2.4M
Lionel Messi 2.86M
Robert Lewandowski 1.16M
Cristiano Ronaldo 3.75M
Pelé 5.75M
Kylian Mbappé 3.35M
Kevin De Bruyne 1.4M
Sadio Mané 925K
Kylian Mbappé 3.3M
Neymar Jr 4.85M
Diego Maradona 1.98M
Sadio Mané 730K
Alisson 179K
N'Golo Kanté 1.9M
Robert Lewandowski 400K
Ronaldo 0
Zinedine Zidane 0
Lionel Messi 4.77M
Lionel Messi 2.3M
Alisson 160K
Mohamed Salah 520K
Raphaël Varane 940K
Karim Benzema 370K
Luis Suárez 679K
【讨论】:
以上是关于在 Python 中抓取网站(Futbin)时如何更改平台?的主要内容,如果未能解决你的问题,请参考以下文章
Python网页抓取 - 当页面通过JS加载内容时如何获取资源?