クローラ技術 - パブリックレコードのライセンス情報をクロール一度

注:このブログは、爬虫類の教育ではありません主に技術的なポイントは、カーディング

 

  1. データ・インタフェースを探して

  2. 現在のページがクロール直接、唯一の現在のページフレームが見出されたので、データは、透過型のAJAXによって満たされるべきです
  3.   それは見つけるために、現在のURLのAjaxのインターフェイスアドレス、ID変数であります

     

  4.   データ要求を送信し、データディクショナリが返され、

    インポート要求
    
    IF  __name__ == ' __main__ ' #の企業IDへのアクセス 
        URL = ' http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList ' 
        ヘッダ = {
             ' User--エージェント'" Mozillaの/5.0(Windows NTの10.0; Win64のx64-)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 76.0.3809.132サファリ/ 537.36 ' 
        } 
        #のパラメータは、パッケージ 
        データ= {
             ' ON '' trueにします' 'ページ'' 1 ' ' のpageSize '' 15 ' ' 商品名''' ' ConditionTypeを'' 1 ' ' applyname ''' ' applysn ''' 
        } 
        json_ids = requests.post (URL = URL、ヘッダー=ヘッダ、データ=データ).json()

  5.   文字列データのJSONをパース

    ID_LIST = [] 
    json_ids = requests.post(URL = URL、ヘッダー=ヘッダ、データ= データ).json()
     のために DIC  json_ids [ ' リスト' ]:
        id_list.append(DIC [ ' ID ' ])

     

    検証データは、それは我々が上記設定のpageSizeに沿って、辞書15の長さを与えるために、(LEN(ID_LIST))印刷印刷、得られたデータは正確です。

     

     

  6.   会社のID番号を取得し、次の処理アヤックス

    企业详细数据 
    POST_URL = ' http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById ' 
    のための ID ID_LIST:
        データ = {
             ' ID ' :ID 
        } 
        detail_json = requests.post(URL = POST_URL、ヘッダー=ヘッダ、データ= データ).json()
    
        all_data_list.append(detail_json)

    取得、確認、次のステップストレージ運用に関する情報を印刷して、それが行われています

  7.  単純な永続的なデータストレージ

    all_data_list永続ストレージ 
    (FP =オープン' ./medData.json '' W ' =エンコード、' UTF-を。8 ' 
    json.dumpは(all_data_list、FP = FP、ensure_ascii = False)が
     印刷" 完成クロール!"

     保存が完了したことを示すために、新たなJSON形式のファイルがある文書を参照してください。

     

     成功をクロール、データの整合性をチェックしてください!

     

  8.   ページのクロール最適化情報

    # 参数封装
    data={
        'on': 'true',
        'page': '1',
        'pageSize': '15',
        'productName':'',
        'conditionType': '1',
        'applyname':'',
        'applysn':'',
    }

     

    由于从主页复制过来的信息代码进行过分页处理,所以我们要爬取更多数据时要对其进行修改,

    for page in range(1,6):
        page=str(page)
        # 参数封装
        data={
            'on': 'true',
            'page': page,
            'pageSize': '15',
            'productName':'',
            'conditionType': '1',
            'applyname':'',
            'applysn':'',
        }
        json_ids = requests.post(url=url,headers=headers,data=data).json()
        for dic in json_ids['list']:
            id_list.append(dic['ID'])

     

    其中的range内部表示页码,根据不同需求进行更改,不同之处仅在数据数量。

 

以下全部源码展示

 

# coding:utf-8
# author:Joseph

import requests
import json
if __name__=='__main__':
    # 获取企业id
    url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
    }
    id_list = []  # 存储企业的id
    all_data_list = []  # 存储所有的企业详情数据

    for page in range(1,6):
        page=str(page)
        # 参数封装
        data={
            'on': 'true',
            'page': page,
            'pageSize': '15',
            'productName':'',
            'conditionType': '1',
            'applyname':'',
            'applysn':'',
        }
        json_ids = requests.post(url=url,headers=headers,data=data).json()
        for dic in json_ids['list']:
            id_list.append(dic['ID'])

    # print(id_list)
    # 企业详细数据
    post_url='http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
    for id in id_list:
        data={
            'id':id
        }
        detail_json = requests.post(url=post_url, headers=headers, data=data).json()

        all_data_list.append(detail_json)
    #持久化存储all_data_list
    fp = open('./medData.json','w',encoding='utf-8')
    json.dump(all_data_list,fp=fp,ensure_ascii=False)
    print('爬取完成!')

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/91joe/p/12518365.html