我正在嘗試從該網站的所有 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 做到這一點?
有沒有辦法從下一頁抓取資料?
uj5u.com熱心網友回復:
requests因此,您可以使用此處轉到每個頁面。這是通過一個發布請求,然后使用查詢頁面引數來取回順序頁面的資料:
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')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/449246.html
