簡體   English   中英

無法使用請求從網頁中抓取兩個字段

[英]Unable to scrape two fields from a webpage using requests

我正在嘗試使用請求從該網頁中抓取兩個字段。 我使用了准確的選擇器來定位內容,但我無法獲取它們,因為它們是動態生成的並且在頁面源中不可用。 但是,我使用選擇器作為占位符。 我知道如何使用 selenium 來獲取這兩個字段,但我想知道如何使用請求來獲取它們。

我追求的領域:

在此處輸入圖像描述

我試過:

import requests
from bs4 import BeautifulSoup

url = "https://www.namebase.io/domains/unite"

with requests.Session() as s:
    s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
    r = s.get(url)
    soup = BeautifulSoup(r.text,"lxml")
    total_bids = soup.select_one("[class='domain-highlights__container'] [class*='text_type_h4']").text
    highest_lockup = soup.select_one("[class='desktop-bid-card__right'] > [class*='text_type_h3']").text
    print(total_bids,highest_lockup)

如何使用請求獲取這兩個字段?

數據通過 JavaScript 加載,但您可以使用requests模塊獲取 Json 數據。

例如:

import requests

url = 'https://www.namebase.io/api/domains/get/unite'
data = requests.get(url).json()

# uncomment this to print all data:
# import json
# print(json.dumps(data, indent=4))

no_bids = len(data['bids'])
highest = float(data['highestStakeAmount'] / 1_000_000)

print('No. bids', no_bids)
print('Highest lockup', highest)

印刷:

No. bids 6
Highest lockup 5.0

編輯(Firefox 開發工具的屏幕截圖,我在其中找到了 API URL):

在此處輸入圖像描述

暫無
暫無

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

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