- モジュールは研究5:00に基づいて要求を展開
- 要求モジュールは何ですか
- ネイティブネットワーク要求モジュールのpythonに基づいてモジュールリクエスト、主な役割は、要求を開始し、ブラウザをシミュレートすることです。、強力なシンプルかつ効率的な使用。爬虫類の分野における位置の半分を占めています。
- なぜ使用要求モジュール
- urllibはモジュールを使用した場合、不便の多くが存在しますので、次のように要約:
- マニュアル処理エンコードされたURL
- ポストは、手動処理パラメータを要求します
- クッキーとプロキシ処理の複雑な操作
- ......
- 要求モジュールを使用します。
- エンコードされた自動処理URL
- 自動後処理リクエストパラメータ
- クッキーとプロキシ操作を簡素化
- ......
- urllibはモジュールを使用した場合、不便の多くが存在しますので、次のように要約:
- モジュールの要求を使用する方法
- インストール:
- リクエストをインストールするPIP
- プロセスを使用してください
- URLを指定してください
- リクエスト開始要求モジュールに基づいて、
- 応答オブジェクトからデータ値を取得します
- 永続ストレージ
- インストール:
- リクエストと統合モジュールに基づいて、5つの爬虫類のプロジェクトでモジュールを学びます
- 要求に基づいて要求モジュールを取得
- 要件:クロール犬検索ページデータ指定された検索条件
- 要求モジュールに基づいてPOSTリクエスト
- 需要:IMDBのは、成功したログインデータの後にページをクロールログ
- 要求モジュールアヤックスに基づいて要求を取得します
- 要件:クロールIMDBのカテゴリートップ https://movie.douban.com/映画の詳細データ
- ポスト要求モジュール要求ベースのAjax
- 要件:KFCのレストランでは、クエリのクロールhttp://www.kfc.com.cn/kfccda/index.aspxの指定した場所に店舗データを
- 演習
- 要件:化粧品人民共和国中国の生産ライセンスデータをもと国家薬品監督管理局の管理をクロールhttp://125.35.6.84:81/xk/
- 要求に基づいて要求モジュールを取得
- コード・ショー
- 要件:クロール犬検索ページデータ指定された検索条件
import requests import os #指定搜索关键字 word = input('enter a word you want to search:') #自定义请求头信息 headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } #指定url url = 'https://www.sogou.com/web' #封装get请求参数 prams = { 'query':word, 'ie':'utf-8' } #发起请求 response = requests.get(url=url,params=param) #获取响应数据 page_text = response.text with open('./sougou.html','w',encoding='utf-8') as fp: fp.write(page_text)
識別されたキャリア迷彩のアイデンティティを要求します。
-
User-Agent:キャリア要求キャリアアイデンティティ、ブラウザの要求によって開始、ブラウザの要求のサポートは、ユーザーエージェント、ブラウザの身元の要求は、使用クローラは、爬虫類の要求を要求を開始しますプログラム、クローラの身元を特定するためのUser-Agentリクエスト。要求は、キャリアによって知ることができる値がどのブラウザ、又は爬虫類に基づいているか否かを判定する。
-
アンチクライミングメカニズム:一部のポータルは、キャプチャのサイトにUser-Agentリクエストにアクセスし、要求が要求にデータを提供するために、拒否、UAのクローラであるかどうかを判断します。
-
抗抗登るポリシー:UAクローラは、特定のブラウザの身元を偽装。
-
- 需要:IMDBのは、成功したログインデータの後にページをクロールログ
import requests import os url = 'https://accounts.douban.com/login' #封装请求参数 data = { "source": "movie", "redir": "https://movie.douban.com/", "form_email": "15027900535", "form_password": "bobo@15027900535", "login": "登录", } #自定义请求头信息 headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } response = requests.post(url=url,data=data) page_text = response.text with open('./douban111.html','w',encoding='utf-8') as fp: fp.write(page_text)
要件:クロールIMDBのカテゴリートップ https://movie.douban.com/映画の詳細データ
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests import urllib.request if __name__ == "__main__": #指定ajax-get请求的url(通过抓包进行获取) url = 'https://movie.douban.com/j/chart/top_list?' #定制请求头信息,相关的头信息必须封装在字典结构中 headers = { #定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36', } #定制get请求携带的参数(从抓包工具中获取) param = { 'type':'5', 'interval_id':'100:90', 'action':'', 'start':'0', 'limit':'20' } #发起get请求,获取响应对象 response = requests.get(url=url,headers=headers,params=param) #获取响应内容:响应内容为json串 print(response.text)
要件:KFCのレストランでは、クエリのクロールhttp://www.kfc.com.cn/kfccda/index.aspxの指定した場所に店舗データを
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests import urllib.request if __name__ == "__main__": #指定ajax-post请求的url(通过抓包进行获取) url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword' #定制请求头信息,相关的头信息必须封装在字典结构中 headers = { #定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36', } #定制post请求携带的参数(从抓包工具中获取) data = { 'cname':'', 'pid':'', 'keyword':'北京', 'pageIndex': '1', 'pageSize': '10' } #发起post请求,获取响应对象 response = requests.get(url=url,headers=headers,data=data) #获取响应内容:响应内容为json串 print(response.text)
- 要件:中国の化粧品の人民共和国のライセンス生産に関連したデータに基づいて、国家管理医薬品局(FDA)をクロール
import requests from fake_useragent import UserAgent ua = UserAgent(use_cache_server=False,verify_ssl=False).random headers = { 'User-Agent':ua } url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList' pageNum = 3 for page in range(3,5): data = { 'on': 'true', 'page': str(page), 'pageSize': '15', 'productName':'', 'conditionType': '1', 'applyname':'', 'applysn':'' } json_text = requests.post(url=url,data=data,headers=headers).json() all_id_list = [] for dict in json_text['list']: id = dict['ID']#用于二级页面数据获取 #下列详情信息可以在二级页面中获取 # name = dict['EPS_NAME'] # product = dict['PRODUCT_SN'] # man_name = dict['QF_MANAGER_NAME'] # d1 = dict['XC_DATE'] # d2 = dict['XK_DATE'] all_id_list.append(id) #该url是一个ajax的post请求 post_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById' for id in all_id_list: post_data = { 'id':id } response = requests.post(url=post_url,data=post_data,headers=headers) #该请求响应回来的数据有两个,一个是基于text,一个是基于json的,所以可以根据content-type,来获取指定的响应数据 if response.headers['Content-Type'] == 'application/json;charset=UTF-8': #print(response.json()) #进行json解析 json_text = response.json() print(json_text['businessPerson'])