Python 如何在web抓取时增加URL中的页面

Python 如何在web抓取时增加URL中的页面,python,web-scraping,Python,Web Scraping,我正在尝试从transfermarkt.com获取传输数据。我试图获取的数据在10页上列出,所以我需要在URL中增加页码。我让它为一个页面工作,但无法让它为另一个页面工作,我看不出有什么不同。共有10页,每页包括25个5个数据点。对于下面的两个代码片段,我总共得到了250行。然而,对于第二个页面,页面不知何故没有增加,因为输出包含了第一个页面上的数据10次。i、 e.第1行=第26行=第51行,依此类推 谁能告诉我是什么导致了这个问题 1) 工作正常的代码: players = [] value

我正在尝试从transfermarkt.com获取传输数据。我试图获取的数据在10页上列出,所以我需要在URL中增加页码。我让它为一个页面工作,但无法让它为另一个页面工作,我看不出有什么不同。共有10页,每页包括25个5个数据点。对于下面的两个代码片段,我总共得到了250行。然而,对于第二个页面,页面不知何故没有增加,因为输出包含了第一个页面上的数据10次。i、 e.第1行=第26行=第51行,依此类推

谁能告诉我是什么导致了这个问题

1) 工作正常的代码:

players = []
values = []
headers = {'User-Agent':'Mozilla/5.0'}

with requests.Session() as s:
    for page in range(1,21):
        r = s.get(f'https://www.transfermarkt.com/spieler-statistik/wertvollstespieler/marktwertetop?ajax=yw1&page={page}', headers=headers)
        soup = bs(r.content,'lxml')
        players += [i.text for i in soup.select('.items .spielprofil_tooltip')]
        values += [i.text for i in soup.select('.items .rechts.hauptlink')]
2) 仅返回第一页数据的代码(输出列表的长度为250,但第一页上的数据重复10次)


您可以尝试在手之前生成链接,并从中列出一个列表,然后针对每个列表启动GET请求。任何链路故障都可以存储起来,以便以后进行分析

我尝试访问网站上的后续页面,但在访问不同的页码时,您使用的链接不同

尝试以下方法:

import requests as rq

base_uri = "https://www.transfermarkt.com/transfers/neuestetransfers/statistik/plus/plus/1/galerie/0/wettbewerb_id/L1/land_id/minMarktwert/15.000.000/maxMarktwert/100.000.000/yt0/page/"

generated_uris = [f"{base_uri}{pnum}" for pnum in range(1, 11)]

# Alternately if on older version of python
# generated_uris = ["{0}{1}".format(base_uri,pnum) for pnum in range(1,11)]

for uri in generated_uris:
    data = rq.get(uri).text
    #do_something_with_the_html

将链接更改为
f'https://www.transfermarkt.com/transfers/neuestetransfers/statistik/plus/plus/1/galerie/0/wettbewerb_id/L1/land_id/minMarktwert/15.000.000/maxMarktwert/100.000.000/yt0/page/{page}'

导入请求
从bs4导入BeautifulSoup作为bs
玩家名称_15100=[]
年龄_日期_15100=[]
团队_15100=[]
价值_费用_15100=[]
headers={'User-Agent':'Mozilla/5.0'}
将requests.Session()作为s:
对于范围(1,11)内的页面:
r=s.get(f'https://www.transfermarkt.com/transfers/neuestetransfers/statistik/plus/plus/1/galerie/0/wettbewerb_id/L1/land_id/minMarktwert/15.000.000/maxMarktwert/100.000.000/yt0/page/{page}',headers=headers)
汤=bs(r.含量,'lxml')
player_name_15100+=[汤中i的i.text.选择('.items.spielprofil_工具提示')]
age_date_15100+=[i.text表示汤中的i.select('.items.zentriert')]
团队_15100+=[汤中i的i.text.select('.items.vereinprofile_工具提示')]
value_fee_15100+=[i.text代表汤中的i.select('.items.rechts')]
打印(f“{len(player_name_15100)}行”)
对于i,枚举中的名称(已排序(player_name_15100),start=1):
打印(i,名称)

谢谢。当我像你描述的那样更改链接时,它起作用了。然而,一些奇怪的事情正在发生。当我运行代码时,除了团队之外,一切都正常。teams_15100列表缺少4个团队(2个来自左侧,2个来自连接列)。你知道为什么会这样吗?
import requests as rq

base_uri = "https://www.transfermarkt.com/transfers/neuestetransfers/statistik/plus/plus/1/galerie/0/wettbewerb_id/L1/land_id/minMarktwert/15.000.000/maxMarktwert/100.000.000/yt0/page/"

generated_uris = [f"{base_uri}{pnum}" for pnum in range(1, 11)]

# Alternately if on older version of python
# generated_uris = ["{0}{1}".format(base_uri,pnum) for pnum in range(1,11)]

for uri in generated_uris:
    data = rq.get(uri).text
    #do_something_with_the_html