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

简介: 路漫漫其修远兮,吾将上下而求索先上一个爬虫程序的成品截图,然后一行行代码来细说。一、导入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写爬虫会再放一篇文章上来的,弥补现有程序的局限性。

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

目录
相关文章
|
数据采集 存储 JSON
使用Perl脚本编写爬虫程序的一些技术问题解答
使用Perl脚本编写爬虫程序的一些技术问题解答
|
9月前
|
数据采集 人工智能 数据可视化
Scala多线程爬虫程序的数据可视化与分析实践
Scala多线程爬虫程序的数据可视化与分析实践
|
1月前
|
数据采集 存储 JavaScript
jsdom爬虫程序中eBay主页内容爬取的异步处理
jsdom爬虫程序中eBay主页内容爬取的异步处理
|
6月前
|
数据采集 Web App开发 测试技术
如何避免反爬虫程序检测到爬虫行为?
这段内容介绍了几种避免被反爬虫程序检测的方法:通过调整请求频率并遵循网站规则来模拟自然访问;通过设置合理的User-Agent和其他请求头信息来伪装请求;利用代理IP和分布式架构来管理IP地址;以及采用Selenium等工具模拟人类的浏览行为,如随机点击和滚动页面,使爬虫行为更加逼真。这些技巧有助于降低被目标网站识别的风险。
|
5月前
|
数据采集 Python
微博爬虫程序的定时
微博爬虫程序的定时
49 1
|
7月前
|
机器学习/深度学习 数据采集 自然语言处理
Python实现循环神经网络SimpleRNN、LSTM进行淘宝商品评论情感分析(含爬虫程序)
Python实现循环神经网络SimpleRNN、LSTM进行淘宝商品评论情感分析(含爬虫程序)
Python实现循环神经网络SimpleRNN、LSTM进行淘宝商品评论情感分析(含爬虫程序)
|
8月前
|
数据采集 XML 存储
技术经验分享:C#构造蜘蛛爬虫程序
技术经验分享:C#构造蜘蛛爬虫程序
54 0
|
9月前
|
数据采集 缓存 算法
使用Python打造爬虫程序之Python中的并发与异步IO:解锁高效数据处理之道
【4月更文挑战第19天】本文探讨了Python中的并发与异步IO,区分了并发(同时处理任务)与并行(同时执行任务)的概念。Python的多线程受限于GIL,适合IO密集型任务,而多进程适用于CPU密集型任务。异步IO通过非阻塞和回调/协程实现高效IO,Python的asyncio库提供了支持。应用场景包括Web开发和网络爬虫等。实践指南包括理解任务类型、使用asyncio、避免阻塞操作、合理设置并发度和优化性能。理解并运用这些技术能提升Python程序的效率和性能。
|
9月前
|
数据采集 XML 数据挖掘
使用Python打造爬虫程序之HTML解析大揭秘:轻松提取网页数据
【4月更文挑战第19天】本文介绍了HTML解析在爬虫技术中的重要性,并通过Python的BeautifulSoup库展示了如何解析和提取数据。文章涵盖了HTML文档结构、使用BeautifulSoup的基本方法,如`find_all()`、选择器(标签、类、ID选择器)以及提取文本、属性和链接。此外,还讨论了遍历和处理嵌套元素的技巧。
|
9月前
|
数据采集 JavaScript 前端开发
使用Python打造爬虫程序之破茧而出:Python爬虫遭遇反爬虫机制及应对策略
【4月更文挑战第19天】本文探讨了Python爬虫应对反爬虫机制的策略。常见的反爬虫机制包括User-Agent检测、IP限制、动态加载内容、验证码验证和Cookie跟踪。应对策略包括设置合理User-Agent、使用代理IP、处理动态加载内容、验证码识别及维护Cookie。此外,还提到高级策略如降低请求频率、模拟人类行为、分布式爬虫和学习网站规则。开发者需不断学习新策略,同时遵守规则和法律法规,确保爬虫的稳定性和合法性。

热门文章

最新文章