我是靠谱客的博主 疯狂钢笔,最近开发中收集的这篇文章主要介绍Python爬虫实战练习:实现一个简易的网页采集器requests模块requests模块的编码流程项目:实现一个简易的网页采集器UA检测,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:虫萧

PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

 

可以免费领取源码项目实战视频PDF文件

 

requests模块

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

requests模块的编码流程

  1. 指定url
  2. 发起请求
  3. 获取相应数据
  4. 持久化储存
# 爬取搜狗首页的页面源码数据

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)

上述代码执行后:

  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.text
with open(f"{ky}.html","w",encoding='utf-8') as fp:
    fp.write(page_text)

上述代码执行后:

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

UA检测

  • 绝大多数网站都有UA检查反爬机制
  • 门户网站通过检测请求载体的身份标识判定该请求是否为爬虫发出的请求

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

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

# 反反爬策略:请求头增加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)

注意:get的参数headers是一个字典,且键值都是字符串形式

最后

以上就是疯狂钢笔为你收集整理的Python爬虫实战练习:实现一个简易的网页采集器requests模块requests模块的编码流程项目:实现一个简易的网页采集器UA检测的全部内容,希望文章能够帮你解决Python爬虫实战练习:实现一个简易的网页采集器requests模块requests模块的编码流程项目:实现一个简易的网页采集器UA检测所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部