【python实现网络爬虫(17)】使用正则表达式爬取百度以任意关键词搜索返回结果的数据

Caroline ·
更新时间:2024-11-13
· 644 次阅读

正则表达式爬取百度搜索结果1. 爬虫架构2. 创建分页url2.1 网页url规律查找2.2 创建接口输出url测试3 正则表达式匹配3.1 直接匹配源代码3.2 配合网页解析进行结果匹配4. 小结5. 全部代码5.1 re + 源代码5.2 bs4 + re 1. 爬虫架构

为了减少不必要的步骤,直接加载一下爬虫的基础架构,如下。注意,一定要填写自己的headers的内容

import re import requests import time headers = { 'Cookie': '_ga=GA1.2.1075258978.1586877585; _gid=GA1.2.304073749.1587691875; ', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36' } #这里的cookie和header加上自己浏览器的即可 def get_data(url): html = requests.get(url,headers) if html.status_code == 200: print('正在爬取中...') time.sleep(2) parse_html(html.text) else: print('Error',url) def parse_html(text): pass if __name__ == '__main__': pass 2. 创建分页url 2.1 网页url规律查找

这里假设使用“python”作为关键词进行搜索,然后习惯的是查看第2、3、4页,这样就可以查找url之间的规律了,后面的参数会有很多,只需要选取有效的部分即可,如下

u2 = https://www.baidu.com/s?wd=python&pn=10&oq=python&ie=utf-8 u3 = https://www.baidu.com/s?wd=python&pn=20&oq=python&ie=utf-8 u4 = https://www.baidu.com/s?wd=python&pn=30&oq=python&ie=utf-8 ...... 2.2 创建接口输出url测试

一次写的代码要有可扩展性,而不是只针对于具体的内容,最好是保留一个接口,这样可以使得爬虫的程序代码高效,因此需要进行input的输入,然后对于关键词的解析,存在着中文字符,就需要将其转化为可以识别的内容,这里导入urllib库中的parse模块进行关键词的解析,如下。

关于第一条语句的使用,该行代码的意义是什么?功能就是将执行区和功能函数区进行分割,创建接口

if __name__ == "__main__"

一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此该段代码的作用就是控制这两种情况执行代码的过程,在该行代码下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的

也就是该行代码前面就是导入的库和相关定义的函数,该行代码下面就是我们进行的具体赋值和对应的操作

if __name__ == '__main__': keyword = parse.quote(input('请输入要爬取的关键词:')) num = eval(input('请输入要爬取的页数:')) for i in range(0,num): url = f'https://www.baidu.com/s?wd={keyword}&pn={i*10}&oq={keyword}&ie=utf-8' print(url) get_data(url)

→ 输出的结果为:(因为保留的接口,所以可以输入任何关键字,比如以“网易”为例,搜索前3页)
在这里插入图片描述

3 正则表达式匹配

正则表达式在爬虫中使用有两种使用方式,一种是不需要配合bs4直接在源代码中进行数据的匹配(比如爬取B站弹幕时候获取cid信息,爬取酷狗音乐中获取榜单的hash值);还有一种结合bs4进行标签解析结果输出后进行复杂字段信息的提取(豆瓣读书详细信息介绍,链家二手房的详细信息介绍)

3.1 直接匹配源代码

这时候就不是进入检查界面了,而是直接在搜索结果的界面鼠标右键,然后在弹出的选项中选择“查看网页源代码”,把要爬取的标题在弹出“源代码”中进行数据匹配,查看保存需求数据的格式,比如就是以刚刚的搜索python为例,选择标题和其对应的url为获取对象

流程步骤解析:【复制要爬取的内容】→ 【目标页面右键进入源代码页面】→ 【ctrl+f调出查找窗口】→ 【在小窗中粘贴复制的内容】→ 【找到目标数据的格式规律】→ 【使用正则替换掉目标数据】→ 编写代码

流程图解,如下,注意箭头及对应的标号。
原创文章 158获赞 90访问量 4万+ 关注 私信 展开阅读全文
作者:Be_melting



爬虫 数据 网络爬虫 正则 关键 正则表达式 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号