如何使用BeautifulSoup进入下一页?

How to go to the next page using BeautifulSoup?

我正在尝试从 this website 的所有 37 个网页中抓取数据。

我正在删除的网站不允许通过搜索栏转到下一页。

这是为下一个按钮编写的HTML。

<a href="javascript:void('Next')" class="next">
    <svg viewBox="0 0 36 36" data-use="/cms/svg/site/icon_caret_right.36.svg">
        (path tag and data)
    </svg>
</a>

我知道这可以用 Selenium 来完成,但是有没有办法用 BeautifulSoup 来做到这一点?

有没有办法从下一页抓取数据?

因此您可以在此处使用 requests 转到每个页面。它通过 post 请求,然后使用查询页面参数取回连续页面的数据:

import requests
from bs4 import BeautifulSoup
import re

url = 'https://www.stfrancismedicalcenter.com/find-a-provider/'


for page in range(1, 38):
    print(f'\t\tPage: {page}')
    payload = {
    '_m_': 'FindAPhysician',
    'PhysicianSearch$HDR0$PhysicianName': '',
    'PhysicianSearch$HDR0$SpecialtyIDs': '',
    'PhysicianSearch$HDR0$Distance': '5',
    'PhysicianSearch$HDR0$ZipCodeSearch': '',
    'PhysicianSearch$HDR0$Keywords': '',
    'PhysicianSearch$HDR0$LanguageIDs': '',
    'PhysicianSearch$HDR0$Gender': '',
    'PhysicianSearch$HDR0$InsuranceIDs': '',
    'PhysicianSearch$HDR0$AffiliationIDs': '',
    'PhysicianSearch$HDR0$NewPatientsOnly': '',
    'PhysicianSearch$HDR0$InNetwork': '',
    'PhysicianSearch$HDR0$HasPhoto': '',
    'PhysicianSearch$FTR01$PagingID': str(page)}
    
    response = requests.post(url, data=payload)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    items = soup.find_all('li', {'class':re.compile("^half item-")})
    for item in items:
        itemName = item.find('div', {'class':'info'}).find_all('span')[0].text
        itemType = item.find('div', {'class':'info'}).find_all('span')[1].text
        phone = item.find('li', {'class':'inline-svg phone'}).text.strip()
        address = item.find('address').text.strip().replace('\t','')
        
        print(f'\n{itemName}\n{itemType}\n{phone}\n{address}\n')