ホームページ >バックエンド開発 >Python チュートリアル >Pythonを使ってソフト試験問題をクロールするIP自動プロキシ方法を詳しく解説
最近、試験のためにインターネットからソフトな試験問題をキャプチャする予定ですが、キャプチャ中にいくつかの問題が発生しました。次の記事では主に pythonは、ソフト試験問題のIP自動プロキシの関連情報をクロールします。記事で詳しく紹介されています。必要な友達は以下を参照してください。
前書き
最近、ソフトウェア プロフェッショナル レベルの試験があります。以下、ソフト試験と呼びます。試験の復習と準備をより良くするために、www.rkpass.cn からソフト試験の問題を入手する予定です
まず第一に、私がどのようにソフト試験問題をクロールしたかについてお話しましょう。以下に示すように、特定のモジュールのすべての質問を自動的にキャプチャできます。現在、30 個のテスト問題レコードすべてを取得できます。情報システム責任者の情報をキャプチャすることができ、その結果は下図の通りです。情報システム責任者の攻略を例にとると、目標が明確であり、能力を追求するためのパラメータが明確なので、試験用紙の情報を短時間で攻略することはしませんでした。
例外処理。昨晩、長い間穴を埋めてきました。
本題に戻りますが、記事内で新しい穴に遭遇したため、このブログを書いています。おそらくリクエストが多すぎると推測されます。 、そのため、IP はウェブサイトのアンチクローラーメカニズムによってブロックされました 生きている人間は窒息死することはできません。私たちの革命家の偉業は、社会主義者として、困難に屈してはいけないことを教えてくれます。山を越えて道路を作り、川を越えて橋を架ける IP 問題を解決するために、IP プロキシというアイデアが出てきました Web クローラーによる情報のクローリングの過程で、クローリング頻度が Web サイトよりも高い場合。しきい値が設定されている場合、通常、Web サイトのクローラー対策メカニズムは IP に基づいてクローラーを識別しますそのため、クローラー開発者は通常、この問題を解決するために次の 2 つの方法を取る必要があります。 1. クロール速度を遅くし、ターゲット Web サイトへの負荷を軽減します。ただし、これにより、単位時間あたりのクロール量が減少します。2 番目の方法は、プロキシ IP を設定することで突破します。ただし、これには複数の安定したプロキシ IP が必要です
これ以上の説明は必要ありません。コードに移動してください:# IP地址取自国内髙匿代理IP网站:http://www.xicidaili.com/nn/ # 仅仅爬取首页IP地址就足够一般使用 from bs4 import BeautifulSoup import requests import random #获取当前页面上的ip def get_ip_list(url, headers): web_data = requests.get(url, headers=headers) soup = BeautifulSoup(web_data.text) ips = soup.find_all('tr') ip_list = [] for i in range(1, len(ips)): ip_info = ips[i] tds = ip_info.find_all('td') ip_list.append(tds[1].text + ':' + tds[2].text) return ip_list #从抓取到的Ip中随机获取一个ip def get_random_ip(ip_list): proxy_list = [] for ip in ip_list: proxy_list.append('http://' + ip) proxy_ip = random.choice(proxy_list) proxies = {'http': proxy_ip} return proxies #国内高匿代理IP网主地址 url = 'http://www.xicidaili.com/nn/' #请求头 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'} #计数器,根据计数器来循环抓取所有页面的ip num = 0 #创建一个数组,将捕捉到的ip存放到数组 ip_array = [] while num < 1537: num += 1 ip_list = get_ip_list(url+str(num), headers=headers) ip_array.append(ip_list) for ip in ip_array: print(ip) #创建随机数,随机取到一个ip # proxies = get_random_ip(ip_list) # print(proxies)実行結果のスクリーンショット: このように、クローラーがリクエストすると、リクエスト IP を自動 IP に設定すると、クローラー対策メカニズム
における固定 IP の単純なブロックを効果的に回避できます。
以上がPythonを使ってソフト試験問題をクロールするIP自動プロキシ方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。