簡體   English   中英

如何使用BeautifulSoup將go轉到下一頁?

[英]How to go to the next page using BeautifulSoup?

我正在嘗試從該網站的所有 37 個 web 頁面中抓取數據。

我正在刪除的網站不允許通過搜索欄轉到下一頁。

這是為下一個按鈕編寫的 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向每個頁面發送 go。 它是通過一個 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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM