蜗牛爬行日记——正则表达式与第一个爬虫程序

简介: 路漫漫其修远兮,吾将上下而求索先上一个爬虫程序的成品截图,然后一行行代码来细说。一、导入requests库和正则表达式首先是导入requests库和re模块。
img_6996f9c78e0c1375e465d851dba4c8d9.jpe
路漫漫其修远兮,吾将上下而求索

先上一个爬虫程序的成品截图,然后一行行代码来细说。

img_539e0546b5913e8d65a698f29387260c.png

一、导入requests库和正则表达式

首先是导入requests库和re模块。使用re模块,python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配。

用Python写爬虫,提取网站信息有很多种方法,第三行被注释掉的代码,导入beautifulsoup就是其中一种方法,但本篇文章只说明如何使用正则表达式作匹配。

二、添加header

如果不添加该行代码的话,程序会报错。例如出现urllib2.HTTPError: HTTP Error 403: Forbidden的错误。这是由于网站禁止爬虫。

我们可以加上头信息,伪装成浏览器访问.。

其中,agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以要在headers中设置agent。接下来是写清楚电脑配置和浏览器配置。

我查了一下资料,此处关于header的内容细究下去还是挺多的,而且分为好几类header。

比如,在登录之后的知乎首页按F12->network,点击第一个请求,查看headers,可看到General、Response Headers、Request Headers三个分类,有General

Request URL: https://www.zhihu.com/

Request Method:GET

img_5c999172d5c749ca84df9134871d42f0.png

在此不赘述,提供我用的具体代码。

headers={"User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}

三、定义获取用户id的函数

主要说一下re的主要功能函数。

常用的功能函数包括:compile、search、match、split、findall(finditer)、sub(subn)、compile等等参数。这里使用了re.findall(pattern, string[, flags])函数。

该作用是:在字符串中找到正则表达式所匹配的所有子串,并组成一个列表返回。

下面这个博客里面有关于正则表达式的使用举例,大家可以参考一下。

http://blog.csdn.net/u014015972/article/details/50541839

上面的程序只用到了(.*?)这一正则表达式,即写出用户id前后一定数量的代码,即可匹配出用户id。可见以下的使用举例:

***************************************

# .*?的使用举例
c = re.findall('xx.*?xx', secret_code)
printc# ['xxIxx', 'xxlovexx', 'xxyouxx']

***************************************

四、输入要爬的网站url,调用获取id的函数

不同的网站有不同的正则表达式,这里我选的是百度贴吧里的二次元吧。

https://tieba.baidu.com/p/5097778035

程序是没有错的,但是由于方法的局限性,除了爬取出用户id之外,还匹配了一些别的文本。

其实上面那个正则表达式还可以改得更简单些。?

罗罗攀老师讲课的时候用的是糗事百科的网站,正则表达式是<h2>(.*?)</h2>,大家也可以试一下。

等我学会了用beautifulsoup写爬虫会再放一篇文章上来的,弥补现有程序的局限性。

如果有大神知道怎样解决上面这个问题,也请留言指点一二。

目录
相关文章
|
4月前
|
数据采集 人工智能 数据可视化
Scala多线程爬虫程序的数据可视化与分析实践
Scala多线程爬虫程序的数据可视化与分析实践
|
6月前
|
数据采集 存储 JSON
使用Perl脚本编写爬虫程序的一些技术问题解答
使用Perl脚本编写爬虫程序的一些技术问题解答
|
5天前
|
数据采集 JavaScript 前端开发
使用Python打造爬虫程序之破茧而出:Python爬虫遭遇反爬虫机制及应对策略
【4月更文挑战第19天】本文探讨了Python爬虫应对反爬虫机制的策略。常见的反爬虫机制包括User-Agent检测、IP限制、动态加载内容、验证码验证和Cookie跟踪。应对策略包括设置合理User-Agent、使用代理IP、处理动态加载内容、验证码识别及维护Cookie。此外,还提到高级策略如降低请求频率、模拟人类行为、分布式爬虫和学习网站规则。开发者需不断学习新策略,同时遵守规则和法律法规,确保爬虫的稳定性和合法性。
|
3月前
|
数据采集 数据挖掘 开发者
使用RoboBrowser库实现JD.com视频链接爬虫程序
使用RoboBrowser库实现JD.com视频链接爬虫程序
|
3月前
|
数据采集 JavaScript 前端开发
TypeScript 和 jsdom 库创建爬虫程序示例
TypeScript 和 jsdom 库创建爬虫程序示例
|
6月前
|
数据采集 数据处理 Python
Python爬虫程序中的504错误:原因、常见场景和解决方法
Python爬虫程序中的504错误:原因、常见场景和解决方法
|
7月前
|
数据采集 PHP 开发者
|
8月前
|
数据采集 Serverless 数据安全/隐私保护
如何解决爬虫程序中登录时遇到的动态Token问题
如何解决爬虫程序中登录时遇到的动态Token问题
|
11月前
|
数据采集 缓存 Python
如何多方面的优化python爬虫程序速度
如何多方面的优化python爬虫程序速度
|
数据采集 消息中间件 分布式计算
爬虫识别-读取预处理后的数据到爬虫识别程序|学习笔记
快速学习爬虫识别-读取预处理后的数据到爬虫识别程序。
93 0
爬虫识别-读取预处理后的数据到爬虫识别程序|学习笔记

热门文章

最新文章