。
みなさん、こんにちは。スーパーマンをいじめるのが好きなレックス、レックスです。
専門分野: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で数十万の製品情報とレビューをクロールする方法を引き続き紹介します。
【ご不明な点がございましたら、メッセージを残してください~~~】