防止爬虫爬取的机制(教你如何防止爬虫爬抓取数据)
程序员文章站
2024-03-26 17:48:17
事情是这样的亚马逊是全球最大的购物平台很多商品信息、用户评价等等都是最丰富的。今天,手把手带大家,越过亚马逊的反爬虫机制爬取你想要的商品、评论等等有用信息反爬虫机制但是,我们想用爬虫来爬取相关的数据信...
事情是这样的
亚马逊是全球最大的购物平台
很多商品信息、用户评价等等都是最丰富的。
今天,手把手带大家,越过亚马逊的反爬虫机制
爬取你想要的商品、评论等等有用信息
反爬虫机制
但是,我们想用爬虫来爬取相关的数据信息时
像亚马逊、tbao、jd这些大型的购物商城
他们为了保护自己的数据信息,都是有一套完善的反爬虫机制的
先试试亚马逊的反爬机制
我们用不同的几个python爬虫模块,来一步步试探
最终,成功越过反爬机制。
一、urllib模块
代码如下:
# -*- coding:utf-8 -*-
import urllib.request
req = urllib.request.urlopen('https://www.amazon.com')
print(req.code)
复制代码
返回结果:状态码:503。
分析:亚马逊将你的请求,识别为了爬虫,拒绝提供服务。
本着科学严谨的态度,我们拿万人上的百度试一下。
返回结果:状态码 200
分析:正常访问
本着科学严谨的态度,我们拿万人上的百度试一下。
返回结果:状态码 200
分析:正常访问
代码如下 ↓ ↓ ↓
import requests
url='https://www.amazon.com/kavu-rope-bag-denim-size/product-reviews/xxxxxxx'
web_header={
'user-agent': 'mozilla/5.0 (windows nt 10.0; win64; x64; rv:88.0) gecko/20100101 firefox/88.0',
'accept': '*/*',
'accept-language': 'zh-cn,zh;q=0.8,zh-tw;q=0.7,zh-hk;q=0.5,en-us;q=0.3,en;q=0.2',
'accept-encoding': 'gzip, deflate, br',
'connection': 'keep-alive',
'cookie': '你的cookie值',
'te': 'trailers'}
r = requests.get(url,headers=web_header)
print(r.status_code)
复制代码
返回结果:状态码:200
分析:返回状态码是200了,正常了,有点爬虫那味了。
3、检查返回页面
我们通过requests+cookie的方法,得到的状态码为200
目前至少被亚马逊的服务器正常提供服务了
我们将爬取的页面写入文本中,通过浏览器打开。
我踏马…返回状态是正常了,但返回的是一个反爬虫的验证码页面。
还是 被亚马逊给挡住了。
三、selenium自动化模块
相关selenium模块的安装
pip install selenium
复制代码
代码中引入selenium,并设置相关参数
import os
from requests.api import options
from selenium import webdriver
from selenium.webdriver.chrome.options import options
#selenium配置参数
options = options()
#配置无头参数,即不打开浏览器
options.add_argument('--headless')
#配置chrome浏览器的selenium驱动
chromedriver="c:/users/pacer/appdata/local/google/chrome/application/chromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
#将参数设置+浏览器驱动组合
browser = webdriver.chrome(chromedriver,chrome_options=options)
复制代码
测试访问
url = "https://www.amazon.com"
print(url)
#通过selenium来访问亚马逊
browser.get(url)
复制代码
返回结果:状态码:200
分析:返回状态码是200了,访问状态正常,我们再看看爬到的网页信息。
将网页源码保存到本地
#将爬取到的网页信息,写入到本地文件
fw=open('e:/amzon.html','w',encoding='utf-8')
fw.write(str(browser.page_source))
browser.close()
fw.close()
复制代码
打开我们爬取的本地文件,查看 ,
我们已经成功越过了反爬虫机制,进入到了amazon的首页
结局
通过selenium模块,我们可以成功的越过
亚马逊的反爬虫机制。
下一篇:我们继续介绍,如何来爬取亚马逊的数十万商品信息及评论。