令狐陈 发表于 2022-9-7 17:21:24

soup.find_all使用

鱼友好

   不懂就问哈


我在爬取交易所里指标(DMI)的数据,不知道如何应用soup.find_all这个(看了说明,可惜基础知识不足哈{:5_100:} ),大佬指导。(新手,有可能代码有问题哈)

目标网址:https://www.binance.com/zh-CN/futures/ETHUSDT

------目标数据:


------代码:


------print 无反应:



大佬指导哈!!!

wp231957 发表于 2022-9-7 18:35:34

bs4仅限于静态解析,所以你应该先判断一下
你要的信息是静态的还是动态的

令狐陈 发表于 2022-9-8 08:53:51

wp231957 发表于 2022-9-7 18:35
bs4仅限于静态解析,所以你应该先判断一下
你要的信息是静态的还是动态的

那应该是动态的,随着时间的变化,数值就变化。
动态的应该怎么获取呢?

ZhKQYu 发表于 2022-9-8 09:16:14

令狐陈 发表于 2022-9-8 08:53
那应该是动态的,随着时间的变化,数值就变化。
动态的应该怎么获取呢?

f12->network 看看里面有没有对应的接口

suchocolate 发表于 2022-9-8 09:16:32

贴代码

ZhKQYu 发表于 2022-9-8 09:18:09

令狐陈 发表于 2022-9-8 08:53
那应该是动态的,随着时间的变化,数值就变化。
动态的应该怎么获取呢?

而且貌似国内无法访问,国外网站吧

令狐陈 发表于 2022-9-8 10:21:44

ZhKQYu 发表于 2022-9-8 09:16
f12->network 看看里面有没有对应的接口

我同事跟我说, 指标数据是前端实时计算出来的(只保存价格,通过价格和算法计算而得),后端没有存储指标数据的。我已经咨询了交易所,等那边回复吧。{:5_100:},学python就是为了爬数据做分析的。{:5_100:}

令狐陈 发表于 2022-9-8 10:35:53

suchocolate 发表于 2022-9-8 09:16
贴代码

问了交易所那边,指标数据确实是前端实时计算出来的。后端没有储存。估计爬不到。

suchocolate 发表于 2022-9-8 11:23:02

令狐陈 发表于 2022-9-8 10:35
问了交易所那边,指标数据确实是前端实时计算出来的。后端没有储存。估计爬不到。

能看到就能爬,如果是实时变动,那么爬的结果就是那一刻的数据。
贴代码,没空手输你的图片里的代码。

令狐陈 发表于 2022-9-9 14:03:21

suchocolate 发表于 2022-9-8 11:23
能看到就能爬,如果是实时变动,那么爬的结果就是那一刻的数据。
贴代码,没空手输你的图片里的代码。

感谢您的帮忙哈!!

源码放.txt文件里,也放了源码截图。

ZhKQYu 发表于 2022-9-9 18:31:33

令狐陈 发表于 2022-9-9 14:03
感谢您的帮忙哈!!

源码放.txt文件里,也放了源码截图。

selenium试试这个库吧可能能解决你的问题

令狐陈 发表于 2022-9-9 21:24:23

ZhKQYu 发表于 2022-9-9 18:31
selenium试试这个库吧可能能解决你的问题

非常感谢你的指点。
不过这涉及到我这新手的又一个盲区了,哈哈。
大致看了一下,貌似可以达到我的要求,我会认真学习的 ,再次感谢!

suchocolate 发表于 2022-9-10 08:01:13

本帖最后由 suchocolate 于 2022-9-10 08:05 编辑

令狐陈 发表于 2022-9-9 14:03
感谢您的帮忙哈!!

源码放.txt文件里,也放了源码截图。

贴你写的代码,那个压缩包里没有。
请别人帮忙,他们得复现问题,复现问题得有代码,请用<>发代码.

令狐陈 发表于 2022-9-10 22:02:45

suchocolate 发表于 2022-9-10 08:01
贴你写的代码,那个压缩包里没有。
请别人帮忙,他们得复现问题,复现问题得有代码,请用发代码.

误解上面意思了,代码如下:


### 爬取ADX ###


import urllib.request,urllib.error
import re
from bs4 import BeautifulSoup
import xlwt


def main():
    baseurl = "https://www.binance.com/zh-CN/futures/ETHUSDT"
    #爬取网页
    datalist = getData(baseurl)

#爬取网页
def getData():
    datalist=[]#h获取地址中的数据封装成列表,并将数据返回
    html=askURL(url)#将获取的网页源码保存到HTML中

      #逐一解析数据
    soup = BeautifulSoup(html,"html.parser")#html.parser是网页解析器
    for item in soup.find_all('div',class_ = "chart-title-indicator-container"):
      print(item)
   
    return datalist


#获取指定一个网页的内容的方法

def askURL(url):
    #伪装成网页的形式
    headers = {
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
    }
    requests = urllib.request.Request(url=url,headers=headers)
    html=""#存放到html中
    #防止出现意外
    try:
      response = urllib.request.urlopen(requests)
      html = response.read().decode("utf-8")   #读取response
    except urllib.error.URLError as e :#捕获404 500等浏览器错误
      if hasattr(e,"code"):
            print(e.code)
      if hasattr(e,"reasin"):
            print(e.reason)
    return html

页: [1]
查看完整版本: soup.find_all使用