繁体   English   中英

如何使用 Beautiful Soup 抓取多页搜索结果

[英]How to scrape multiple pages of search results with Beautiful Soup

使用以下网址:

https://www.prosportstransactions.com/basketball/Search/SearchResults.php?Player=&Team=Celtics&BeginDate=&EndDate=&PlayerMovementChkBx=yes&Submit=Search

我正在尝试抓取此处显示的表格的结果。 问题是,无论如何,搜索结果都限制在每页 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM