PythonでAjaxをクロールする方法

(*-*)浩
(*-*)浩オリジナル
2019-07-01 10:22:035158ブラウズ

Python パッケージ: リクエストを使用します。

PythonでAjaxをクロールする方法

具体的な方法: (推奨学習: Python ビデオ チュートリアル )

まず、独自のヘッダーを定義します。ヘッダーの User-Agent フィールドを使用して、ランダムな置換のニーズに応じてリストを設計できることに注意してください。

ajax データの Web ページの機能: NetWork の XHR ネットワーク フローにはいくつかの ajax リクエストがあり、その request_url は ajax リクエスト インターフェイスである必要があり、ヘッダーのリファラーはジャンプ前の URL です。自身を構築する場合 ヘッダーにリファラーフィールドを設定する必要があります。

Lagou.com のホームページで「java」を検索する場合を例に挙げます。

PythonでAjaxをクロールする方法 ajax データ クローラーと通常の Web クローラーにはもう 1 つの URL があります。1 つは次の URL です。リファラー。ヘッダーに配置されます。もう 1 つは ajax_url で、これもメインのアクセス URL です。

最も重要な点は、ajax は通常 json データを返すため、キャプチャされたデータの解析形式が異なることです。結果セットを json 結果セットに変換するだけで、アクセス方法は通常の辞書アクセスまたはリスト アクセスになります。

もう 1 つはアクセス パラメータで、リクエストに param が含まれている場合は構築されます。そうでない場合は、無視してください。この例にはパラメータがあります。パラメータ ディクショナリの構築方法に注意してください。

簡単な完全なコードを以下に示します。

from urllib.request import quote,unquote
import random
import requests
 
keyword = quote('java').strip()
print(keyword, type(keyword))
city = quote('郑州').strip()
print(unquote(city))
 
refer_url = 'https://www.lagou.com/jobs/list_%s?city=%s&cl=false&fromSearch=true&labelWords=&suginput=' % (keyword, city)
ajax_url = 'https://www.lagou.com/jobs/positionAjax.json?city=%s&needAddtionalResult=false' %city
user_agents=[
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299',
]
 
data ={
    'first': 'true',
    'pn': '1',
    'kd': keyword,
}
headers={
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'Content-Length': '46',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Host': 'www.lagou.com',
    'Origin': 'https://www.lagou.com',
    'Referer': refer_url,
    'User-Agent': user_agents[random.randrange(0,3)],
    'X-Anit-Forge-Code': '0',
    'X-Anit-Forge-Token': 'None',
    'X-Requested-With': 'XMLHttpRequest',
}
resp = requests.post(ajax_url,data=data, headers=headers)
 
result = resp.json()
print(result)
# print(result)
#result 就是最终获得的json格式数据
item = result['content']['positionResult']['result'][0]
print(item)
#item就是单个招聘条目信息
print("程序结束")

Python 関連の技術記事の詳細については、Python チュートリアル#をご覧ください。 ## 学びのコラム!

以上がPythonでAjaxをクロールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。