【爬虫類戦闘】Amazonの爬虫類対策メカニズムを段階的に分析していきましょう

みなさん、こんにちは。スーパーマンをいじめるのが好きなレックス、レックスです。

専門分野:Python開発、ネットワークセキュリティの浸透、Windowsドメイン制御Exchangeアーキテクチャ

今日の焦点:段階的な分析とAmazonの爬虫類対策メカニズムの克服

つまりね

アマゾンは世界最大のショッピングプラットフォームです

たくさんの商品情報やユーザーレビューなどが一番豊富です。

今日は、みんなを手に取って、Amazonの爬虫類対策メカニズムを横断しましょう

必要な商品やレビューなどの役立つ情報をクロールします

爬虫類対策メカニズム

ただし、クローラーを使用して関連データ情報をクロールする場合

アマゾン、TBo、JDのような大きなショッピングモール

それらのデータ情報を保護するために、それらはすべて、爬虫類対策メカニズムの完全なセットを備えています。

最初にAmazonのアンチクロールメカニズムを試してください

いくつかの異なるPythonクローラーモジュールを使用して、段階的にテストします

結局、クライミング防止メカニズムは無事に通過しました。

1.urllibモジュール

コードは次のように表示されます。

# -*- coding:utf-8 -*-
import urllib.request
req = urllib.request.urlopen('https://www.amazon.com')
print(req.code)
复制代码

戻り結果:ステータスコード:503。

分析:Amazonはリクエストをクローラーとして識別し、サービスの提供を拒否します。

科学的かつ厳格な態度で、何千人もの人々の頂点に立つ百度を試してみましょう。

戻り結果:ステータスコード200

分析:通常のアクセス

つまり、urllibモジュールのリクエストは、Amazonによってクローラーとして認識され、処理を拒否されます。

2.リクエストモジュール

1.クローラーへの直接アクセスを要求します

効果は以下の通りです↓↓↓

コードは以下の通りです↓↓↓

import requests
url='https://www.amazon.com/KAVU-Rope-Bag-Denim-Size/product-reviews/xxxxxx'
r = requests.get(url)
print(r.status_code)
复制代码

戻り結果:ステータスコード:503。

分析:Amazonはrequsetsモジュールのリクエストも拒否しました

それをクローラーとして識別し、サービスの提供を拒否します。

2.リクエストにCookieを追加します

さらに、Cookieやその他の関連情報をリクエストします

効果は以下の通りです↓↓↓

コードは以下の通りです↓↓↓

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です。

少なくとも現在、Amazonのサーバーによって提供されています。

クロールされたページをテキストに書き込み、ブラウザで開きます。

馬を踏んだ…返品状況は正常ですが、返品はクローラー防止確認コードページです。

まだAmazonによってブロックされています。

3、セレン自動化モジュール

関連するセレンモジュールのインストール

pip install 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で、アクセスステータスは正常です。クロールされたWebページの情報を見てみましょう。

Webページのソースコードをローカルに保存します

#将爬取到的网页信息,写入到本地文件
fw=open('E:/amzon.html','w',encoding='utf-8')
fw.write(str(browser.page_source))
browser.close()
fw.close()
复制代码

クロールして表示したローカルファイルを開き、

クロール防止メカニズムを回避し、Amazonのホームページにアクセスしました。

エンディング

セレンモジュールを通して、私たちはうまく交差することができます

アマゾンのアンチクロールメカニズム。

次へ:Amazonで数十万の製品情報とレビューをクロールする方法を引き続き紹介します。

【ご不明な点がございましたら、メッセージを残してください~~~】

おすすめ

転載: juejin.im/post/6974300157126901790