Immortal463 2023-02-24 21:28 采纳率: 37.5%
浏览 53
已结题

python爬虫运行没有结果的问题

python爬虫
http://vip.stock.finance.sina.com.cn/fund_center/index.html#hbphall
抓取所有基金的信息

我先写了基金代码的一部分,但是运行后没有结果,想要问问是什么问题

import requests
from bs4 import BeautifulSoup
import time
import random
import re
import pandas as pd
import matplotlib.pyplot as plt


class Jijin:
    def __init__(self):
        self.URL = "http://vip.stock.finance.sina.com.cn/fund_center/index.html#hbphall"
        self.startnum = [i for i in range(0, 11652, 40)]
        self.header = {
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}

    def getinf(self):
        self.num = []
        # self.name = []
        # self.unitvalue = []
        # self.totalvalue = []
        # self.performance1 = []
        # self.performance2 = []
        # self.performance3 = []
        # self.performance4 = []
        # self.performance5 = []

        for start in self.startnum:
            time.sleep(random.randint(1, 5))  # 伪装成人为随机时间点击
            html = requests.get(self.URL, params={"start": str(start)}, headers=self.header)
            soup = BeautifulSoup(html.text, "html.parser")

            nums = soup.select(
                '#divHBPH.p_r > div.relative_outer > div#cHBPH.fundTab.table.fblue > table > tbody > tr.red > td.colorize > a')
            #             names =
            #             unitvalues =
            #             totalvalues =
            #             performance1s =
            #             performance2s =
            #             performance3s =
            #             performance4s =
            #             performance5s =
            for numi in nums:
                self.num.append(numi.text)
        print(self.num)
        self.result = pd.DataFrame(zip(self.num))
        # 没有返回结果

    def print_result(self):
        # print('*'*60)
        pd.set_option('display.max_rows', None)  # 显示pandas所有行
        return self.result
        # 返回一个结果

    pass


if __name__ == '__main__':
    cls = Jijin()
    cls.getinf()
    cls.print_result()

  • 写回答

3条回答 默认 最新

  • cjh4312 2023-02-24 21:55
    关注

    给你起个头,其它比较容易,一次请求了5000个,多了好像不行,试了9000个都可以,可以分两次

    
    url="http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2.CallbackList['32sd$CbNssSUuKmO']/NetValueReturn_Service.NetValueReturnOpen?page=1&num=5000&sort=form_year&asc=0&ccode=&type2=0&type3="
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
    }
    dd=requests.get(url,headers).text
    df=re.findall(r'{"total_num".*}',dd)[0]
    data=pd.DataFrame(json.loads(df)['data'])
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月1日
  • 已采纳回答 2月26日
  • 创建了问题 2月24日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装