使用beautifulsoup进行网络抓取的困难

时间:2020-06-12 05:16:45

标签: python web-scraping beautifulsoup

我正在尝试使用Python Jupyter中的beautifulsoup从下面的网站上从以下网站取消价格。我想要的元素具有“平均价格”的独特类别。我尝试使用findall函数,但无法将其废弃。有人可以帮我看看有什么问题吗?

网站:https://otc.hbg.com/en-us/trade/buy-usdt/

import requests
URL = 'https://otc.hbg.com/en-us/trade/buy-btc/' 
page = requests.get(URL)
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')
containers = soup.find_all("div", {"class": "price average"})
containers

3 个答案:

答案 0 :(得分:1)

数据通过JavaScript动态加载。但是您可以使用requests模块来解析必要的信息:

import json
import requests


url = 'https://otc-api.hbg.com/v1/data/trade-market?coinId=1&currency=3&tradeType=sell&currPage=1&payMethod=0&country=153&blockType=general&online=1&range=0&amount='
data = requests.get(url).json()

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

for d in data['data']:
    print('{:<30}{}'.format(d['userName'], d['price']))

打印:

CRXzone.com                   13286.95
CRXzone.com                   13352.66
cryptotil                     13352.66
coinhub                       13365.81
btcsg                         13470.94
108057692                     13470.94
yjyjyj                        13536.66
Silkroad1015                  13668.08
btcsg                         14193.78
digicryp                      16427.98

答案 1 :(得分:0)

您要实现的目标无法在网络抓取程序的帮助下完成,因为您要抓取的元素需要额外的用户交互才能出现在页面上。使用Selenium进行网络自动化,以达到所需的结果。

答案 2 :(得分:0)

您不需要硒。只需查询他们的API

import requests

url = 'https://otc-api-hk.eiijo.cn/v1/data/trade-market?coinId=2&currency=4&tradeType=sell&currPage=1&payMethod=0&country=74&blockType=general&online=1&range=0&amount='

resp = requests.get(url).json()

for i in resp['data']:
    print(i['price'])