0

0

如何使用 Python 抓取雪球网页?

PHP中文网

PHP中文网

发布时间:2016-06-06 16:10:27

|

3548人浏览过

|

来源于php中文网

原创

我想使用beautifulsoup或者其他的python包  抓取  雪球网页上面的一些组合,因为雪球网的组合持仓变动的时候,雪球网不会给提示,比如说,我想抓取这个xueqiu.com/p/zh010389。基本的想法是用程序追踪到他的持仓,然后有变化的时候,程序给我一个提示。

##简而言之,要做的事情是:打开这个界面,然后打开这个界面的调仓历史记录,然后记录下他的当前仓位,对比以前的仓位。##

问题是:由于我对html不太了解,我打开chrome的开发者工具的时候,不知道应该怎么样让我的程序打开他的调仓历史记录。。。

这个问题可能比较小白。。。麻烦啦!!!

回复内容:

//好多人说现在关注就有提醒的……呃,题主提问的时候显然没那个功能。我写这个只是自己在学习爬虫过程中的练习。我不炒股也不上雪球……

//好多赞。容我安利一篇自己的回答如何入门 Python 爬虫? - 段晓晨的回答

边做边调边写~
#start coding
首先要知道自己在爬什么~楼主说找到HTML的代码云云,思路其实是错误的。因为我们想要的内容不在原始的html里面。但是肯定在浏览器和服务器之间的通信里,我们只要找到这部分数据就好。
#我用的是Firefox的FireBug
选择网络(Chrome中应该是Network),点击调仓历史记录,如图

19f2857c102321adcf48f05b1fb1e394_b.jpg

可以看到浏览器和服务器之间进行了一次通信。我们截获了一个网址。打开看看。

看上去像是一堆乱,但是细心的话就会发现……

3a16c3f9fee89c1baa2ed1466cdeda76_b.jpg
也就是说我们要的数据都在这里了,所以只要先获取这个页面的内容然后在提取数据就好了~

立即学习Python免费学习笔记(深入)”;

import urllib.request
url = 'http://xueqiu.com/cubes/rebalancing/history.json?cube_symbol=ZH010389&count=20&p
age=1'
req = urllib.request.Request(url,headers=headers)
html = urllib.request.urlopen(req).read().decode('utf-8')
print(html)

现在关注一个组合,就会有持仓变动的提示了。不过我觉得这事情挺有意思的。比如可以把很多持仓的数据都抓下来,做一些综合的分析,看看现在网站上被持有最多的股票是哪一支,某一天被调入最多的又是哪一支之类。

于是我决定来抓抓看,顺便借此说说我通常用程序做自动抓取的过程。

Step.1 分析页面

要抓一个网页,首先自然是要“研究”这个网页。通常我会用两种方式:

一个是 Chrome 的 Developer Tools。通过它里面的 Network 功能可以看到页面发出的所有网络请求,而大多数数据请求都会在 XHR 标签下。点击某一个请求,可以看到其具体信息,以及服务器的返回结果。很多网站在对于某些数据会有专门的请求接口,返回一组 json 或者 XML 格式的数据,供前台处理后显示。


另一个就是直接查看网页源代码。通常浏览器的右键菜单里都有这个功能。从页面的 HTML 源码里直接寻找你要的数据,分析它格式,为抓取做准备。

对于雪球上的一个组合页面 ,粗略地看了一下它发出的请求,并没有如预想那样直接找到某个数据接口。看源代码,发现有这样一段:

SNB.cubeInfo = {"id":10289,"name":"誓把老刀挑下位","symbol":"ZH010389" ...此处略过三千字... "created_date":"2014.11.25"}
SNB.cubePieData = [{"name":"汽车","weight":100,"color":"#537299"}];

雪球网已经改了很多规则,以前的很多代码估计都不能用了
我刚写了一个雪球网的模拟登录,fuck-login/012 xueqiu.com at master · xchaoinfo/fuck-login · GitHub
在此基础上修改,可以达到题主的目的,而且可以做到更加简单。
处理 cookies ,不需要每次都登录一次的方法,可以参考 fuck-login/001 zhihu at master · xchaoinfo/fuck-login · GitHub 的处理方法。 需要两个模块配合:

  • 爬虫模块:单纯负责抓取和存储数据

  • 数据处理模块:处理爬虫存储的数据。如发现某个人某个持仓数据发生了变化,向你发出通知

    ChatGPT Writer
    ChatGPT Writer

    免费 Chrome 扩展程序,使用 ChatGPT AI 生成电子邮件和消息。

    下载


该爬虫的简单的流程:

  1. 定时访问目标页面

  2. 抓取当前目标页面的数据,存入数据库

数据处理模块简单的流程:

  1. 定时访问数据库

  2. 数据库中的数据满足某个条件时执行自己设定的动作

抓取雪球的数据?巧了,刚看到一篇文章专门讲这个的,推荐给大家:互联网金融爬虫怎么写已关注的组合会收到调仓通知。

#技术宅都好暴力,看不到调仓就直接抓......# 我在 @段晓晨的基础上做了一点点优化,目前是这样的。

测试前请把帐号密码填上

更新内容:
增加了自动获取cookie
修改了一下显示组合改变的代码

import urllib.requestimport jsonimport http.cookiejar#设置cookieCookieJar = http.cookiejar.CookieJar()CookieProcessor = urllib.request.HTTPCookieProcessor(CookieJar)opener = urllib.request.build_opener(CookieProcessor)urllib.request.install_opener(opener)#登陆获得cookieparams = urllib.parse.urlencode({'username':'*****','password':'*****'}).encode(encoding='UTF8')headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0'}request = urllib.request.Request('http://xueqiu.com/user/login',headers=headers)httpf = opener.open(request, params)#获得组合url = 'http://xueqiu.com/cubes/rebalancing/history.json?cube_symbol=ZH340739&count=20&page=1'req = urllib.request.Request(url,headers=headers)html = urllib.request.urlopen(req).read().decode('utf-8')data = json.loads(html)stockdata = data['list'][0]['rebalancing_histories']for i in range(len(stockdata)):print('股票名称',end=':')print(stockdata[i]['stock_name'],end='   持仓变化')print(stockdata[i]['prev_weight'],end='-->')print(stockdata[i]['target_weight'])

首先需要三个库:urllib2,cookielib,json
然后用firefox 打开誓把老刀挑下位 并登陆,然后找到 cookie文件,
最后调仓记录的地址是:xueqiu.com/cubes/rebala   用urllib2 和coolielib 伪造header,和cookie 访问 就可以得到 json文件格式的调仓记录,然后用json 处理 就可以了 题主不知道关注后有推送提示么 ...... 用shell

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

3

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

12

2026.03.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

69

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

59

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

46

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

24

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

20

2026.02.27

Golang 测试与调试专题:确保代码可靠性
Golang 测试与调试专题:确保代码可靠性

本专题聚焦 Golang 的测试与调试体系,系统讲解单元测试、表驱动测试、基准测试与覆盖率分析方法,并深入剖析调试工具与常见问题定位思路。通过实践示例,引导建立可验证、可回归的工程习惯,从而持续提升代码可靠性与可维护性。

4

2026.02.27

漫蛙app官网链接入口
漫蛙app官网链接入口

漫蛙App官网提供多条稳定入口,包括 https://manwa.me、https

348

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十三期_前端开发
第二十三期_前端开发

共98课时 | 8.1万人学习

Node.js基础教程
Node.js基础教程

共8课时 | 1.3万人学习

nodejs开发基础教程
nodejs开发基础教程

共15课时 | 4.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号