网页文章采集器(绝对能使你眼前一亮,通过这篇文章介绍希望你能有所收获)
优采云 发布时间: 2022-02-13 18:18网页文章采集器(绝对能使你眼前一亮,通过这篇文章介绍希望你能有所收获)
本文文章向你展示了如何用Python实现一个网页采集器,内容简洁易懂,一定会让你眼前一亮。希望你能从详细的介绍中有所收获。
请求模块
用python封装的基于网络请求的模块。用于模拟浏览器请求。安装:pip install requests
请求模块的编码过程
指定网址
发起请求
获取对应数据
永久存储
# 爬取搜狗首页的页面源码数据
import requests
# 1. 指定url
url = "https://www.sogou.com"
# 2.发送请求 get
response = 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.text
with open(f"{ky}.html","w",encoding='utf-8') as fp:
fp.write(page_text)
以上代码执行后:
乱码
数据量级错误
# 解决乱码
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.text
with open(f"{ky}.html","w",encoding='utf-8') as fp:
fp.write(page_text)
以上代码执行后:
收到错误页面(搜狗的反爬机制)
UA 检测
防反爬策略:UA伪装请求头添加User-Agent
打开浏览器请求搜狗页面,右键勾选进入Network,点击Headers找到浏览器的User-Agent
注意:任何浏览器 ID 都可以。
# 反反爬策略:请求头增加User-Agent
url = "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.text
with open(f"{ky}.html","w",encoding='utf-8') as fp:
fp.write(page_text)
以上内容是如何用Python实现一个网页采集器,你学到了什么知识或者技巧吗?如果您想学习更多技能或丰富知识储备,请关注易宿云行业资讯频道。