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

时间:2020-02-25 22:06:56

标签: python web-scraping beautifulsoup

使用以下网址:

17th

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

1 个答案:

答案 0 :(得分:1)

在整个代码段上制作一个do循环,以抓取其中一个表,并将网址增加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