没有合适的资源?快使用搜索试试~ 我知道了~
首页【python实现网络爬虫(17)】使用正则表达式爬取百度以任意关键词搜索返回结果的数据
正则表达式爬取百度搜索结果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.3
资源详情
资源评论
资源推荐

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
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0