爬虫练习--正则表达式实战编写步骤--案例:糗事百科

先上代码,在解释:

import requests
from fake_useragent import UserAgent
import re
url = "https://www.qiushibaike.com/text/page/1/"
headers = {
    "User-Agent": UserAgent().random
}
#构造请求,发送请求,返回请求
response = requests.get(url,headers=headers)
info = response.text
# print(info)
infos = re.findall(r'<div class="content">\s*<span>\s*(.+)\s*</span>', info)
print(infos)
with open('duanzi.txt', 'w', encoding='UTF-8') as f:
    for info in infos:
        f.write(info + '\n\n\n')

在代码中最关键的部分就是如何编写正则表达式,下面我们来解释这个这个正则表达式"<div class="content">\s*<span>\s*(.+)\s*</span>"是如何构造出来的:
我们先来找到对应的网址,看看是什么情况:https://www.qiushibaike.com/text/page/1/
然后在infos语句前面打一个断点,这样便于我们调试,且不用频繁的给服务器发送请求:
如图:
在这里插入图片描述
在这里插入图片描述
然后再找到我们的源代码,分析内容发现,我们要爬取的内容在<div>标签中
在这里插入图片描述
在这里插入图片描述

不过,我们需要的是span的内容,再在后面输入
在这里插入图片描述

让我们再来分析源代码,发现<div><span>之间有一个换行,而我们并没有将换行符表现出来,这是错误的原因
在这里插入图片描述

此时添加换行符,\s*表示换行0次或多次
在这里插入图片描述

敲回车,发现可以了,当然这里的正则表达式还是不能达到我们的目的的,继续按照以上方式进行编写正则表达式。
在这里插入图片描述

此时,正则表达式已经编写好了,粘贴到代码里面吗就可以了。至此正则表达式的编写已经完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值