python - 如何使用 Beautiful Soup 抓取多页搜索结果
问题描述
使用以下网址:
我正在尝试抓取此处显示的表格的结果。问题是,无论如何,搜索结果仅限于 25/页,正如您所看到的 - 多个页面上有数千个结果。
我试图更改开始和结束日期无济于事。
当我用美汤刮的时候,我只能刮到结果的第1页,然后就停止了。我缺少什么(在这种情况下),所有 85 页的结果?(并且 - 我的代码是成功的,但只从结果的第 1 页返回一个抓取)。
这是我的代码:
blah = []
html = 'https://www.prosportstransactions.com/basketball/Search/SearchResults.php?Player=&Team=Celticss&PlayerMovementChkBx=yes&submit=Search&start=0'
webpage = requests.get(html)
content = webpage.content
soup = BeautifulSoup(content)
for item in soup.find_all('tr'):
for value in item.find_all('td'):
gm = value.text
blah.append(gm)
解决方案
在整个代码段周围添加一个 do 循环,该循环会抓取其中一个表,并将 url 递增 25。在下面的代码段中,我刚刚创建了一个最初为零的计数器变量,每个循环递增 25。当对请求的响应不再有效时,代码将中断循环,这意味着您遇到错误或搜索结果结束。您可以修改该语句以中断 404 或打印错误等。
下面的代码未经测试,只是我的概念的演示。
blah = []
url = 'https://www.prosportstransactions.com/basketball/Search/SearchResults.php?Player=&Team=Celticss&PlayerMovementChkBx=yes&submit=Search&start='
counter = 0
while True:
url += str(counter)
webpage = requests.get(url)
if webpage.status_code != 200:
break
content = webpage.content
soup = BeautifulSoup(content)
for item in soup.find_all('tr'):
for value in item.find_all('td'):
gm = value.text
blah.append(gm)
counter += 25
推荐阅读
- python - NLTK CFG 非终端之间没有空格
- python-3.x - 停止由另一个事件处理的事件
- azure - SignalR Azure 新帐户不会出现集成问题
- node.js - 当我尝试访问 localhost 时,node.js 应用程序中的 get() 没有被调用
- javascript - Commander 包未正确解析所有选项
- mysql - MySql 计算分组字段百分比并显示在一行
- makefile - 设置变量以用于不同的 make 目标
- assembly - 无论如何让GCC生成额外的NOP指令以将指令执行与某个块大小对齐?
- python - 如何在 pytorch 或 numpy 中对分数/概率图进行聚类并获取模式(可变数字)
- reactjs - Tensorflow.js 裁剪图像返回零张量