爬虫類ノートを書きます
あなたは爬虫類が合法である登る資源の合理的な利用を取るが、国境を越えないように注意する必要がある場合は、多くの有用なリソースは、ウェブ上であり、プログラマが爬虫類を書くためにあるため、200人が逮捕された複数の会社につながる、前の段階の企業がありますその最初の爬虫類のどのような話題に入る前に理解することは違法です。
クローラーが収集する場合は、市民、ID番号、通信通信接触、アドレス、アカウントパスワード、財産状況の名前を行方やその他の個人情報を追跡し、違法な手段に使用され、その後、確かに市民の個人情報への不正アクセスを構成します違反。加えて、関連する規則に従って、州の規制の違反のため、他人に販売または市民の個人情報を提供する、状況は深刻であり、市民の個人情報を取得する盗難や他の違法な手段、個々の市民情報に対する犯罪」として構成することができます「3年の懲役または刑事上の拘留、または罰金の金、状況は特に深刻で、三年以上7年の懲役と罰金に。
フォーカス:以下の例では、そこに重大な違法爬虫類、あること、さらには犯罪を構成することができます。
- サーバー抗クロール対策、関連情報への不正アクセスを設定するには、ウェブサイトの運営をクロールまたは壊す迂回防止措置のクローラは、状況が構成することができる、深刻な「コンピュータ情報システムのデータ犯罪への不正アクセスを。」
- クローラや正常な動作をアクセスするサイトシステムに干渉し、結果は深刻で、刑法の違反は、「コンピュータ情報システムの破壊の犯罪を。」を構成します
- 情報爬虫類のコレクションは、市民の個人情報に属する不法市民の個人情報を取得する犯罪を構成してもよい、状況は深刻で、「市民の個人情報に対する犯罪」を構成することができます
詳細はできるほとんどの爬虫類知る
学ぶために、このリンクで)。
簡単に言えば、ないプロセスオーバーまたは合意に違反するか、抗爬虫類クロールサーバーをクラックするのではなく、クロールマルチスレッドに、市民の個人情報に触れないでください。
II。データソースを検索するには
私たちは情報のスターの写真を探しているなら、我々は最初のソースを見つける必要があり、検索エンジンは見つけることは容易であり、これはちょうどクレソンからそれをダウンロードするように、このサイトのファンアートのクレソンは、より簡単クレソンのインターフェイスの観点から、またあります。
下に示すように、Googleの検索ボックス検索クレソンスターでブラウザ「李ヒョリ」、開発ツールを入力するには、F12キーを押しを開き、場所にネットワークXHRをクリックし、XHRのXMLHttpRequestは、あなたができることを意味し、バックグラウンドでサーバーとデータのやり取りを行うための短いですページ全体をロードしない場合には、ウェブページの内容の一部が更新されます。
Ajaxを使用すると、最初の画像をダウンロードするためのリンクを介して要求、その後、アドレスXHRリクエストを見つけ、要求の内容を分析することで、ローカルに保存することができ、一般的に、私たちは写真をダウンロードし、JSON形式です。
分析XHRアドレスとフォーマット:
新しいタブページでは、次のようにあなたは、より詳細な情報を見ることができることを、右、左のアドレスを開きます
あなたはSolrの友人を知っている場合、あなたはこのリンクはクエリパラメータQにあり、検索Solrの、と非常によく似ているでしょう、20のクエリ制限の数は、スタートが開始位置で合計があるだろうが、その結果は、大規模なJSONであります:3382。
次のように各画像の情報は次のとおりです。
{
"src": "https://img3.doubanio.com\/view\/photo\/photo\/public\/p396284045.webp",
"author": "在棉花糖上吃云",
"url": "https:\/\/www.douban.com\/link2\/?url=http%3A%2F%2Fwww.douban.com%2Fphotos%2Fphoto%2F396284045%2F&query=%E6%9D%8E%E5%AD%9D%E5%88%A9&cat_id=1025&type=search",
"id": "396284045",
"title": "李孝利3",
"width": 461,
"height": 600
}
三つのpython準備
要求は、簡単にクロールのWebページには、以下のコマンドでインストールすることができますすることができますPython言語を使用するHTTP要求モジュール用の共通リポジトリ、次のとおりです。
pip install requests
セレンは、Web自動テストツールであり、あなたは爬虫類を書くためにそれを使用し、より複雑なシーンのために、ページ要素などの分析と抽出をサポートして、いくつかの自動化された操作を実行するために、ブラウザを呼び出すことができ非常に適しています。
pip install selenium
あなたがプロセスを使用して質問がある場合は、あなたが見ることができる:https://www.jianshu.com/p/1531e12f8852の場合についての詳細を学ぶために。
コードは以下の通りであります:
# -*- coding: utf-8 -*-
import requests
import json
import sys
import io
import os
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Cookie': 'll="118318"; bid=VphkMecYUeI; __yadk_uid=RmReW2rcZ2z0mvK7XU2Hk5lbJRkh9Xmt; viewed="1140457"; gr_user_id=06ee0f44-322d-4247-93ac-de144da52338; _vwo_uuid_v2=DC05E55FE4B8188FEF5DD65F5152BE5D2|7eed6e6d696f6c06984eef171f438b14; __utmz=30149280.1576832766.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=30149280; dbcl2="2241899:Qr3KzLK8mY4"; push_doumail_num=0; push_noty_num=0; __utmv=30149280.224; ck=QxRM; douban-fav-remind=1; __gads=ID=c2c2b4d1b545c075:T=1576833631:S=ALNI_ManfN_EbMMtHwjeyAGIuRlVSkk3kw; _pk_ses.100001.8cb4=*; ap_v=0,6.0; __utma=30149280.426358312.1576832766.1576840609.1576845825.3; __utmt=1; loc-last-index-location-id="118318"; _pk_id.100001.8cb4=9fac3e30c5487d2c.1576832764.3.1576845892.1576840608.; __utmb=30149280.8.10.1576845825',
'Host': 'www.douban.com',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
def download(picPath,src, id):
if not os.path.isdir(picPath):
os.mkdir(picPath)
dir = picPath+'/' + str(id) + '.jpg'
print(src)
try:
pic = requests.get(src)
fp = open(dir, 'wb')
fp.write(pic.content)
fp.close()
except requests.exceptions.ConnectionError:
print('Sorrry,image cannot downloaded, url is error{}.'.format(src))
def query_img(query,downloadUrl,headers):
realUrl = downloadUrl.format(query)
print(realUrl)
response = requests.get(realUrl,headers = headers,timeout=30)
respJson = json.loads(response.text,encoding='utf-8')
picPath = 'F:\\python\\images'
for image in respJson['images']:
#print(image)
download(picPath,image['src'], image['id'])
if __name__ == "__main__":
query = '李孝利'
url = 'https://www.douban.com/j/search_photo?q=\'{}\'&limit=20&start=0'
query_img(query,url,headers)
空の問題の返還の要求を満たすために3.1要求
r = requests.get('https://www.douban.com/j/search_photo?q='李孝利'&limit=20&start=0')
ヘッドは、直接リターンステータスコード418を設定されていないので、この単純な要求では、許容できない、NULLを返します。
3.2コーディングの経験は問題は解決できませんでしたされています
r = requests.get('https://www.douban.com/j/search_photo?q='李孝利'&limit=20&start=0',headers=headers)
print(r.content.decode('utf-8'))
print(r.text)
print(r.encoding)
UTF-8としてエンコード戻ったが、r.contentは、非常に奇妙な解決されていない、この問題も、長い時間を投げる、そして最終的に私が誤って頭の情報の印刷によって返されました:
print (r.headers)
結果:
{'Date': 'Sat, 21 Dec 2019 02:19:21 GMT',
'Content-Type': 'application/json; charset=utf-8',
'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=30', 'Vary': 'Accept-Encoding', 'X-Xss-Protection': '1; mode=block', 'X-Douban-Mobileapp': '0',
'Expires': 'Sun, 1 Jan 2006 01:00:00 GMT',
'Pragma': 'no-cache', 'Cache-Control': 'must-revalidate, no-cache, private', 'X-DAE-App': 'bywater', 'X-DAE-Instance': 'default', 'X-DAE-Mountpoint': 'True', 'Server': 'dae', 'Strict-Transport-Security': 'max-age=15552000;',
'Content-Encoding': 'br'}
最終的なコンテンツは、それが何であるか、エンコードBRに発見された、それが正常であることが表示されます。オリジナルIが許容可能な圧縮アルゴリズムを指定するリクエストヘッダを設定すると、高速ハードウェア圧縮アルゴリズムは、より良いGZIPより指標を圧縮しています。
'Accept-Encoding': 'gzip, deflate, br',
簡単な解決策は、BR、通常後ろプロセスの各ステップを除去することです。
3.3ダウンロード画像サイズが0であります
返されたステータスコードの下に、418で間違っている、これは知っているだろうに見えた、私はこの特定のヘッダはそれを得るヘッダを設定するという問題があり、実際には、単に、開発者と、ブラウザを介してアクセスされますそれは[OK]を、これまでの単純な画像の一括ダウンロードが完了し過ぎて、移動中に行くと、それにモード要求ヘッダー情報を参照してください。
もともとシンプルで小さなスクリプトは、そのプロセスはまだ非常に蛇行していると、実際の動作は、まだいくつかの距離であることを理解しているようだ「このような行為が不可欠であることを知っている必要があります」文である必要があります。
四、いくつかの参照
:を参照することができます興味を持っているBRについて圧縮アルゴリズム
https://blog.csdn.net/weixin_40414337/article/details/88561066