系列教程:

互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)

上一节课我们一起通过一个p2p网贷爬虫,深入了解了一下XPath以及其在最终实际使用中的写法。可以毫不夸张的说,对于写简单爬虫来说,最最重要的,就是使用好XPath,以及这一课要讲的正则表达式。

正则表达式,又称正规表示法、常规表示法(英语:Regular   Expression,在代码中常简写为regex、regexp或RE)

正则表达式几乎出现在每一个编程语言中,有着极其广泛的应用,比如做网页的时候,判断用户输入的是否是邮箱这样的正则。正则表达式本身写法基本在各个语言中都是一致的,不过调用方法可能略有不同,在我们教的爬虫中,正则表达式主要应用在界定列表url和内容url的格式上,就是什么url是列表url,什么url是内容url,什么url直接丢弃掉。这样做主要是为了提高整个爬虫的爬取效率,防止爬虫在无关的url花费太长的时间,当然如果希望全网爬的话,也可以不做设定。

对于手里有点闲钱的人来说,可能最常见的投资品就是股票了,虽然中国股票市场那叫一个变幻诡谲,妖兽频出。但依旧相对其他流通性差,投资门槛高的投资产品来说,有着国家信用背书的股市依然是不二的投资选择。股票的数据很多地方都有,我们今天就通过雪球的行情中心,爬一下当天各个上市公司的股票价格吧。

打开雪球行情中心:

哇,突然觉得这是我们教程最高大上的一次。首先,这个页面就可以作为一个不错的入口Url,因为有着挺多的连接,不过从效率来讲,虽然爬虫本身可以帮我们去做很多事情,但是最好还是直接找到列表url会更快一些。我们继续往里找,可以看到这样一个界面:

https://xueqiu.com/hq#exchange=CN&plate=1_1_0&firstName=1&secondName=1_1&type=sha&page=1

原谅我实在不懂股市,姑且就认为这个就是所有股票价格的列表,砖家勿喷~

好了,我们看下这个下一页规律

https://xueqiu.com/hq#exchange=CN&plate=1_1_0&firstName=1&secondName=1_1&type=sha&page=2https://xueqiu.com/hq#exchange=CN&plate=1_1_0&firstName=1&secondName=1_1&type=sha&page=3

看着这种url的结构,发自内心想说:

好了,我们先根据这个连接来提取一下正则表达式,首先我们选中其中一个url,然后原封不动的写出来:

https://xueqiu.com/hq#exchange=CN&plate=1_1_0&firstName=1&secondName=1_1&type=sha&page=2

首先我们需要先把正则里面需要转义的字符进行转移,由于正则表达式中.代表任意字符,?代表指定字符出现0次或者1次,因此如果我们想匹配这两个字符本身的时候一定要记得将他们转义,当然正则中还有很多其他字符需要转移,不过这两个字符是url中最常见的,也是大家最容易弄错的地方。

经过转义之后的字符串是这样的:

https://xueqiu\\.com/hq#exchange=CN&plate=1_1_0&firstName=1&secondName=1_1&type=sha&page=2
https://xueqiu\\.com/hq#exchange=CN&plate=1_1_0&firstName=1&secondName=1_1&type=sha&page=\\d+

最后,一个经验性的东西值得注意,一般来说https的网站都会支持http,甚至有的连接会写成http,因此这里为了程序的健壮性,最好将这段正则修改一下兼容http的格式,修改的方式是我们允许s存在或者不存在,正则中提供了三个字符表示字符出现数量的区间,分别是?表示0或1次,+表示1或多次,*表示0或多次。这里很明显的,我们应该使用?:

https?://xueqiu\\.com/hq#exchange=CN&plate=1_1_0&firstName=1&secondName=1_1&type=sha&page=\\d+

注意这个问号是正则自己的问号,并不需要转义。

这样我们就把列表页的url的正则表达式写出来了。

同样的方法,我们写出内容页的正则表达式:

https?://xueqiu\\.com/S/SH\\d{6}

这里的{6}表示有6位,当位数确定或者范围确定时,可以使用花括号的形式来表示。再次申明,由于本身股票知识匮乏,暂且认为所有代码都是6位的。

写到这里感觉已经离大功告成不远了,然而,当我们测试就可以发现,所有页面的url实际上都是由js生成的,通过ajax请求来的。前功尽弃啊,不过还好咱们还学到了东西。不要灰心,黎明就在最黑暗的时间之后。我们下一课就给大家讲一讲碰到这些个ajax请求该怎么办。

对爬虫感兴趣的童鞋可以加qq群讨论:566855261。

互联网金融爬虫怎么写-第二课 雪球网股票爬虫(正则表达式入门)相关推荐

  1. 互联网金融爬虫怎么写-第二课 雪球网股票爬虫(正则表达式入门) 1

    系列教程: 互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门) 上一节课我们一起通过一个p2p网贷爬虫,深入了解了一下XPath以及其在最终实际使用中的写法.可以毫不夸张的说,对于写简单爬 ...

  2. ajax 代码 查询股票联想,互联网金融爬虫怎么写-第三课 雪球网股票爬虫(ajax分析)...

    大家好啊,话说好久没有出来活动了,组织上安排写代码写了很久,终于又被放出来写教程了,感谢大家一直的支持和厚爱,我会一如既往的帮助大家完成爬虫工程师从入门到放弃的升华. 好,Previous on  系 ...

  3. 实践应用|PyQt5制作雪球网股票数据爬虫工具

    点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货第一时间推给你!!! 最近有盆友需要帮忙写个爬虫脚本,爬取雪球网一些上市公司的财务数据.盆友希望 ...

  4. Python爬虫核心知识-第二章:2.2 爬虫urllib.parse模块

    Python爬虫核心知识 第二章:2.2 爬虫urllib.parse模块 2.2 爬虫urllib.parse模块 Python中的urllib.parse模块中,提供了很多用来解析和重组URL的函 ...

  5. 《互联网金融投资理财一册通》一一2.1 余额宝入门

    本节书摘来自异步社区出版社<互联网金融投资理财一册通>一书中的第2章,第2.1节,作者:葛存山,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.1 余额宝入门 ...

  6. 股票数据爬虫进阶:免费、开源的股票爬虫Python库,实测真香

    ​​ 数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Pyth ...

  7. Python爬虫学习笔记-第二课(网络请求模块上)

    网络请求模块上 1. 相关概念介绍 1.1 向网站发起请求的方式: 1.2 url-全球统一资源定位符 1.3 User-Agent 用户代理 1.4 referer 1.5 状态码 1.6 抓包工具 ...

  8. python在财务中的应用实训报告-实践应用|PyQt5制作雪球网股票数据爬虫工具

    importrequests fromfake_useragentimportUserAgent url= 'https://xueqiu.com' session= requests. Sessio ...

  9. python爬虫爬取雪球网_Python爬虫爬取天天基金网基金排行

    本文以天天基金网为例,爬取网站上的基金排行并存储在本地记事本中和MongoDB数据库中. 打开网页我们看到每页最多显示50个基金信息,在源代码中,我们发现其他页码没有跳转链接.但是我们选择右下角不分页 ...

最新文章

  1. 【前端】JSON.stringfy 和 JSON.parse(待续)
  2. 适合写python的电脑_这篇写给想选计算机专业的学弟学妹们
  3. 算法复习之坐标离散化
  4. qt 3d迷宫游戏_Steam上最硬核的恐怖游戏?玩家耗时一个月才通第一关!
  5. dhcp服务器显示2个ip,下列关于Windows 2003系统DHCP服务器的描述中,错误的是( )。A.DHCP服务器负责多个网段IP地址分配_考题宝...
  6. anaconda要和python安装在一个目录下吗_Python开发环境配置,Anaconda的安装!
  7. 文件内容快速搜索工具(Everything、Listary、DocFetcher)
  8. android的opengl教程,android opengl 教程
  9. 清华陈丹琦:如何让「大模型」变小
  10. 关于腾讯云学生服务器搭建个人网站——配置web开发环境详细步骤
  11. VS Code Material Icon Theme插件设置自定义文件夹图标关联
  12. 汇编语言更象是野球拳,哈哈……
  13. android 8.1 wifi提示“已连接 但无法访问互联网“的解决办法
  14. C语言编程:密码解密
  15. wind10电脑连接“华为蓝牙耳机”
  16. 在ubuntu安装pycharm及之后要做的事
  17. 完美解决 git Unable to access ‘https://github.com/xxxx/xxxx.git/’:OpenSSL SSL_read:Connection was reset
  18. 阳了?别怕,送上居家办公指南
  19. VMware ESXI 6 开启VT-x硬件虚拟化技术
  20. 6种肤色检测方法的原理及实现(C++)

热门文章

  1. C# vs MySql
  2. FPGA设计经验谈 —— 10年FPGA开发经验的工程师肺腑之言
  3. php curl使用详解
  4. 26、Eternal框架v2-框架设计 前置分发器 1、代码
  5. Python的map() 函数
  6. mac java jni_Mac OS上编译JNI的动态库
  7. 推荐系统-Task01熟悉新闻推荐系统基本流程
  8. zookeeper3.4.5集群安装
  9. 哪些是常见的大数据分析模型
  10. 机器学习实践笔记(一)KNN