python爬虫检测机制_python爬虫反爬机制探索

#python爬虫篇#

前几次的爬虫文章讲到了去爬某度,说实话!某都对初学朋友还是很友好的!

只要几行代码就搞定了,至少有东西呈现给你,是不是你需要内容的还需要你再下功夫!

import urllib.request

url = 'htttp://www.baidu.com'

re = urllib.request.urlopen(url)

html = re.read()

print(html)

敲完回车后,看看屏幕上不停滚动的字符,心中还是非常激动的。

3b87e950352ac65ca05f8a0b9849c61692138ab7.png?token=cc6e719d0e7be85dbd05ca13a44c5fd7

我们使用上面的代码,换个网址,比如:

http://www.douban.com

执行url = http://www.douban.com

re = urllib.request.urlopen(url)

回车后就出现了一下的错误提示:

urllib.error.HTTPError: HTTP Error 418:

8c1001e93901213f19977702085c42d62d2e958e.jpeg?token=f95b7f8c046e4136063f68a8ee739859

上面最后一行信息告诉我们,我们的目标网站有反爬机制,接下来我们如何让目标网站的服务器认为自己的爬虫是正常访问的用户呢。这时候我们就需要“伪装”自己。

如何”伪装“?

我们向下看。

首先这里提到一个新名词,用户代理。

百科中这样说:

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

作为初学者,我们关心的是如何使用?

现在就来告诉大家。

第一个,我们自己使用的浏览器的UA是什么?

温馨提示:同一台电脑上不同的浏览器,他们的UA都是不一样的!

打开浏览器。比如windwos edge浏览器。

在里面输入about:version

cf1b9d16fdfaaf51cd49355bd1efe0e9f21f7aea.png?token=ab89b2c84e7fd12b73cf509c4202dc76

这么多信息,到底我需要那个信息,如何使用呢?

找到【用户代理】这一段就可以了。

3b87e950352ac65c56df13a79d49c61691138a4a.jpeg?token=62f2324cb6ae1e1f27466a30e9718de4

然后我们把用户代理加到爬虫里面去。我们需要这样写:

标准格式格式:headers ={'User-Agent':''}

这是一个字典变量,key:value结构

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 Edg/86.0.622.43'}

因为urlopen不能接收这个变量。

我们需要改更改下代码

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 Edg/86.0.622.43'}

request = urllib.request.Request(url=url,headers = headers)

re = urllib.request.urlopen(request)

加这三句进去。

整体代码如下

import urllib.request

url = 'http://www.douban.com'

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 Edg/86.0.622.43'}

request = urllib.request.Request(url = url, headers = headers)

re = urllib.request.urlopen(request)

html = re.read()

print(html)

回车后,哈哈,豆瓣被你攻破了!

7dd98d1001e93901e93866a9195720e037d196b6.png?token=7f0e2183e2255a93fd59cd845327b35c

我们现在知道如何进行初步的反爬了。

下一步,我们要搞很多的浏览器,让我们的爬虫进行访问目标猎物的时候,随机选择,让对方的目标根本没法识别。这是一场斗智的过程。

我们之前使用的是:

urlopen简介

urlopen是urllib.request模块提供的最基本的构造HTTP请求的方法,可以模拟浏览器的一个请求发起过程,同时还支持授权验证(authentication)、重定向(redirection)、浏览器Cookies以及其他内容。

使用方法为

urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, cadefault=False,context=None)

这个方法当中有7个参数,因为我们是最基本的访问,只使用了一个url.

今天我们增加使用了这个:

Request简介

urlopen()方法可以实现最基本的请求的发起,但如果要加入Headers等信息,就可以利用Request类来构造请求。

使用方法为:

urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

可以看出,这个Request类里面有6个参数,我们使用了2个就够了,一个是url,一个是headers.

目前为止:爬虫系统文章如下:

python爬虫预备预备知识

https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_9449450465064677722%22%2C%22sourceFrom%22%3A%22bjh%22%7D

网络爬虫预备知识(二)

https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_10026345515978701465%22%2C%22sourceFrom%22%3A%22bjh%22%7D

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python网络爬虫在爬取网页数据时,常常会遇到反爬机制。为了防止被爬虫程序大量访问,网站会采取一些措施来限制爬虫的访问。以下是一些常见的反爬机制和对应的应对方法: 1. 验证码:网站可能会在登录、提交表单或访问频率过高时出现验证码。爬虫需要通过识别验证码来继续访问网站。常见的验证码识别方法有使用第三方库(如Tesseract、Pillow)进行图像处理和识别,或者使用打码平台(如云打码、超级鹰)进行自动识别。 2. User-Agent检测:网站可能会通过检测请求头中的User-Agent字段来判断是否为爬虫。为了应对这种反爬机制,可以使用随机的User-Agent来模拟不同的浏览器和操作系统,使爬虫看起来更像是真实用户的访问。 3. IP封禁:网站可能会根据IP地址来限制爬虫的访问。为了应对IP封禁,可以使用代理IP来隐藏真实IP地址,或者使用动态IP池来定期更换IP地址。 4. 请求频率限制:网站可能会限制同一IP地址的请求频率,如果请求过于频繁,可能会被封禁或返回错误信息。为了应对频率限制,可以在爬虫程序中设置合理的请求间隔时间,或者使用分布式爬虫来分散请求。 5. 页面解析:网站可能会对页面结构进行加密或混淆,使爬虫难以解析页面内容。为了应对这种情况,可以使用第三方库(如BeautifulSoup、Scrapy)来解析页面,或者使用正则表达式来提取所需数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值