浏览器抓取网页(1.网站会设置一些反爬虫的措施吗?怎么办?)

优采云 发布时间: 2022-03-13 14:17

  浏览器抓取网页(1.网站会设置一些反爬虫的措施吗?怎么办?)

  有时候,当我们的爬虫程序完成,本地测试没有问题的时候,爬了一段时间后,突然发现报错,无法爬取页面内容。这时候我们很可能遇到了网站的反爬虫拦截。

  我们知道,一方面网站想让爬虫爬到网站,比如让搜索引擎爬虫爬取网站的内容,提高网站的搜索排名. 另一方面,由于网站的服务器资源有限,过多的非真实用户对网站的大量访问会增加运营成本和服务器负担。

  因此,一些网站会设置一些反爬措施。只有了解主要的反爬虫措施,才能识别反爬虫措施,进行反爬虫。当然,从道德和法律的角度来看,开发者应该出于合理合法的目的控制爬虫,决不能非法使用爬虫。如果您需要将爬取的内容用于商业用途,则需要特别注意数据上对应的网站声明。

  1. 常用的反爬方法:

  这是最基本的反爬虫方法之一。网站算子通过验证爬虫请求头中的User-agent、accept-enconding等信息来验证请求的主机是真实用户的普通浏览器还是其他一些信息。具体的请求头信息。

  通过ajax或javascript动态获取和加载数据,增加了爬虫直接获取数据的难度。

  相信大部分读者对此都非常熟悉。当我们多次输入错误密码时,很多平台都会弹出各种二维码供我们识别,或者当我们抢优采云票的时候,会有各种复杂的验证码,验证码是使用最广泛的一种防爬虫措施,也是防止爬虫最有效、最直接的方法之一。

  当识别出一些异常访问时,网站运营商会设置黑名单,对确定为爬虫的部分IP进行限制或屏蔽。

  有的网站,没有游客模式,只有注册后才能登录才能看到内容,这是典型的账号限制网站,一般可以在网站用户不多的情况下使用,具有严格安全要求的数据 网站。

  2. 反反爬虫策略:

  我们可以在请求头中替换我们的请求介质,让网站误以为我们是通过移动端访问的。运行以下代码后,当我们打开 hupu.html 时,会发现返回的是移动端的老虎。Flutter 的页面而不是 web 端的页面。

  import requests

from bs4 import BeautifulSoup

header_data = {

'User-Agent': 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; SCH-I535 Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'}

re = requests.get('https://www.hupu.com/', headers=header_data)

bs = BeautifulSoup(re.content)

with open('hupu.html', 'wb') as f:

f.write(bs.prettify(encoding='utf8'))

  例如,我们可以设置一个随机间隔来模拟用户行为,减少访问次数和访问频率。我们可以在我们的爬虫程序中加入如下代码,让爬虫休息3秒左右,然后再爬取,可以有效避免网站对爬虫的检测识别。

  import time

import random

sleep_time = random.randint(0.,2) + random.random()

time.sleep(sleep_time)

  代理是通过访问第三方机器隐藏自己的真实IP地址,然后通过第三方机器的IP访问。

  import requests

link = "http://www.baidu.com/"

proxies = {'http':'XXXXXXXXXXX'} //代理地址,可以自己上网查找,这里就不做推荐了

response = requests.get(link, proxies=proxies)

  因为第三方代理没有好坏之分,而且不稳定,经常会出现断线,爬取速度会慢很多。如果对爬虫的质量有严格要求,不建议使用这种方式进行爬取。

  可以通过动态 IP 拨号服务器或 Tor 代理服务器更改 IP。

  概括

  反反爬虫的策略总是在变化。我们应该详细分析具体问题,通过不断的试错来改进我们的爬虫爬取。不要以为爬虫程序在本地调试好之后就没有问题了,可以高枕无忧了。在线问题总是千变万化。我们需要根据我们具体的反爬措施编写一些反反爬代码,以保证在线环境万无一失。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线