实现简易网页采集器UA伪装反爬策略、处理有参数url

优采云 发布时间: 2021-08-17 04:04

  实现简易网页采集器UA伪装反爬策略、处理有参数url

  请求模块实战02——实现简单的网页采集器(UA伪装反爬策略,处理参数url)

  目录:

  一、防爬机构

  对于爬虫用户来说,网站的防爬机制可以说是他们的头号敌人。反爬虫机制是为了防止爬虫过于频繁的爬取数据,给服务器造成过大的负担,导致服务器崩溃而设置的机制。其实有几种不同的方式:

  通过UA机制识别爬虫

  UA的全称是User Agent,是请求浏览器的身份标识。许多网站 使用它作为识别爬虫的标志。如果访问请求头不收录UA,则判断为爬虫。但是因为这种反爬虫机制很容易被针对,也就是随机UA,所以很少使用这种反爬虫机制。

  通过访问频率识别爬虫

  爬虫为了保证效率,往往会在短时间内多次访问目标网站,所以可以通过单个IP访问的频率来判断是否是爬虫。而且这种反爬的方式更难被反爬机制反抗,只能通过改变代理IP来保证效率,比如飞宇ip代理。

  通过 cookie 和验证码识别爬虫

  cookie是指会员账号和密码的登录验证,可以通过限制单个账号爬取的频率来限制爬虫爬行,且验证码完全随机,无法正确识别爬虫脚本,爬虫程序也可以限制。

  二、UA 伪装

  请求载体标识,一个浏览器发起的请求,请求载体就是浏览器,那么请求的User-Agent就是浏览器的身份,如果是爬虫程序发起的请求,那么载体request是爬虫程序,请求的User-Agent是爬虫程序的身份。服务器可以使用该值来确定请求是浏览器还是爬虫。

  

  我们可以通过正常浏览页面获取允许正常访问的User-Agent。 (网页按F12)

  某些portal网站会在访问网站的请求中捕获并判断User-Agent。如果请求的 UA 是爬虫,那么它将拒绝提供请求的数据。

  反爬虫策略,让爬虫请求对应的url身份冒充某个浏览器

  三、页采集器

  Webpage采集器,简单来说就是利用爬虫技术实现有针对性的网页信息爬取程序。我个人的理解是把程序看成一个工具,类似于转换器,用代码实现与网络数据的转换。

  四、代码实现

  # -*- coding: utf-8

# @Time : 2020/12/7 23:55

# @Author : ZYX

# @File : request实战之网页采集器.py

# @software: PyCharm

import requests

if __name__ == '__main__':

# UA伪装,将对应的user-agent封装到一个字典中

# 对应着谷歌浏览器的一个身份标识

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3776.400 QQBrowser/10.6.4212.400'

}

# 1.指定url

url = 'https://www.sogou.com/web?'

# 处理url携带的参数:封装到字典中

kw = input('enter a word:')

param={

'query':kw

}

# 2.发送请求

# 对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数

response = requests.get(url=url,params=param,headers=headers)

# 3.获得相应数据

page_data = response.text

print(page_data)

# 4.持久化数据存储

fileName = kw+'.html'

with open('./data/'+fileName,'w',encoding='utf-8') as fp:

fp.write(page_data)

print(fileName+'保存成功,爬取数据结束!!!')

  分析:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线