千家信息网

Python中怎么实现一个网页采集器

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,本篇文章为大家展示了Python中怎么实现一个网页采集器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。requests模块python中封装好的一个基于网络请
千家信息网最后更新 2024年11月30日Python中怎么实现一个网页采集器

本篇文章为大家展示了Python中怎么实现一个网页采集器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

requests模块

python中封装好的一个基于网络请求的模块。用来模拟浏览器发请求。安装:pip install requests

requests模块的编码流程

  1. 指定url

  2. 发起请求

  3. 获取相应数据

  4. 持久化储存

# 爬取搜狗首页的页面源码数据import requests# 1. 指定urlurl = "https://www.sogou.com"# 2.发送请求 getresponse = requests.get(url=url)  # get返回值是Response对象# 获取响应数据,响应数据在Response对象里page_text = response.text   # text返回字符串形式的响应数据# 4.持久化储存with open("sogou.html","w",encoding='utf-8') as fp:    fp.write(page_text)

项目:实现一个简易的网页采集器

要求:程序基于搜狗录入任意的关键字然后获取关键字对应的相关的整个页面。

# 1.指定url,需要让url携带的参数动态化url = "https://www.sogou.com/web"# 实现参数动态化,不推荐参数的拼接,参数如果太多就相当麻烦。# requests模块实现了更为简便的方法ky = input("enter a key")params = {    'query':ky}# 将需要的请求参数对应的字典作用到get方法的params参数中,params参数接受一个字典response = requests.get(url=url,params=params)page_text = response.textwith open(f"{ky}.html","w",encoding='utf-8') as fp:    fp.write(page_text)

上述代码执行后:

  1. 出现了乱码

  2. 数据量级不对

# 解决乱码url = "https://www.sogou.com/web"ky = input("enter a key")params = {    'query':ky}response = requests.get(url=url,params=params)# print(response.encoding) 会打印原来response的编码格式response.encoding = 'utf-8'  # 修改响应数据的编码格式page_text = response.textwith open(f"{ky}.html","w",encoding='utf-8') as fp:    fp.write(page_text)

上述代码执行后:

收到了错误页面(搜狗的反爬机制)

UA检测

  • 绝大多数网站都有UA检查反爬机制

  • 门户网站通过检测请求载体的身份标识判定该请求是否为爬虫发出的请求

反反爬策略:UA伪装 请求头增加User-Agent

打开浏览器请求搜狗页面,右键点击检查进入Network,点击Headers找到浏览器的User-Agent
注意:任意浏览器的身份标识都可以。

# 反反爬策略:请求头增加User-Agenturl = "https://www.sogou.com/web"ky = input("enter a key")params = {    'query':ky}# 请求头中增加User-Agent ,注意请求头的数据格式是键值对,且都是字符串。headers = {    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"}response = requests.get(url=url,params=params,headers=headers)response.encoding = 'utf-8'  page_text = response.textwith open(f"{ky}.html","w",encoding='utf-8') as fp:    fp.write(page_text)

上述内容就是Python中怎么实现一个网页采集器,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0