嗨,所以我想抓取域名及其價格,但它回傳 null idk 為什么
from bs4 import BeautifulSoup
url = 'https://www.brandbucket.com/styles/6-letter-domain-names?page=1'
response = requests.get(url)
soup = BeautifulSoup(response.text,'html.parser')
names = soup.findAll('div', {'class': "domainCardDetail"})
print(names)
uj5u.com熱心網友回復:
檢查回應的狀態碼。當我測驗時,來自 Web 服務器的 403 并且因此沒有像“domainCardDetail”div 這樣的元素作為回應。
uj5u.com熱心網友回復:
原因是該網站受 Cloudflare 保護。有一些高級方法可以繞過它。
如果您不需要大量刮擦,則以下解決方案非常簡單。否則,您可能需要使用“clouscraper”“Selenium”或其他方法在網站上啟用 JavaScript。
- 打開開發者控制臺
- 轉到“網路”。確保單擊如下圖所示的刻度。 https://i.stack.imgur.com/v0KTv.png
- 重繪 頁面。
- 復制 JSON 結果并在 Python 中決議它 https://i.stack.imgur.com/odX5S.png
uj5u.com熱心網友回復:
嘗試以下方法從該站點獲取域名及其價格。該腳本當前僅決議第一頁的內容。如果您希望從其他頁面獲取內容,請確保在此處使用所需的頁碼,該頁碼 page=1位于link.
import requests
from bs4 import BeautifulSoup
link = 'https://www.brandbucket.com/styles/6-letter-domain-names?page=1'
url = 'https://www.brandbucket.com/amp/ga'
payload = {
'__amp_source_origin': 'https://www.brandbucket.com'
}
with requests.Session() as s:
s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'
res = s.get(link)
soup = BeautifulSoup(res.text,'html.parser')
payload['dp'] = soup.select_one("amp-iframe")['src'].split("list=")[1].split("&")[0]
resp = s.get(url,params=payload)
for key,val in resp.json()['triggers'].items():
if not key.startswith('domain'):continue
container = val['extraUrlParams']
print(container['pr1nm'],container['pr1pr'])
輸出類似于(截斷):
estita.com 2035
rendro.com 1675
rocamo.com 3115
wzrdry.com 4315
prutti.com 2395
bymodo.com 3495
ethlax.com 2035
intezi.com 2035
podoxa.com 2430
rorror.com 3190
zemoxa.com 2195
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/424249.html
