Python3獲取XX管理局可見資料學習案例

千燈不是燈發表於2020-12-15

python3獲取XX管理局可見資料學習案例

# 匯入erquests (網路請求庫)
import requests
import json
import time


# 進行偽裝!
requests_headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60'
    }

# 1. 獲取首頁阿賈克斯請求資料

# (1)指定url (首頁阿賈克斯url)
home_url ='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do'

# (2)封裝請求引數 (首頁阿賈克斯請求引數)
home_param={
    'method': 'getXkzsList',
    'on': 'true',
    'page': '1' ,         # 頁碼   (想要多少頁內容,動態修改這個頁碼就行)
    'pageSize': '15',     #每頁的資料條數
    'productName': '' ,     # 查詢的關鍵詞
    'conditionType': '1',     #1是許可編號,2是名稱,3是信用程式碼
    'applyname': '',
    'applysn': ''
    }

# 設定睡眠時間 3秒
time.sleep(3)
#  (3)向首頁的阿賈克斯url傳送請求 (先分析使用get() 或者 post(), 然後分析是否是阿賈克斯請求)
home_response =requests.post(url=home_url,params=home_param, headers=requests_headers )


# (4)獲取響應資料 (處理首頁阿賈克斯請求資料,提取裡面的id值,)
hoem_response=home_response.json()  # 為json資料,所以要用.json


# 使用遍歷分別獲取首頁第一頁中的ID!
ajax_list=[]
for ajax_dict in hoem_response['list']:   # 取出response 這個字典中的'list' 鍵,也就是存放首頁ajax請求資料的字典。
    #print( ajax_dict)   # 列印一下看是否已經獲取到字典。
     ajax_id = ajax_dict['ID']   # 通過 ajax_dict 字典中的”ID“鍵來獲取id值。
     #print(ajax_id)   # 列印一下看是否已經獲取到。
     ajax_list.append(ajax_id) # 將獲取到的id值存入ajax_lsit
     
print(ajax_list)   # 列印一下字典看是否寫入字典成功!

# 2. 通過提取到的id值,獲取子頁ajax資料中基本資訊


# (1)指定url (子頁阿賈克斯url)
child_url = "http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById"

# 使用遍歷分別列印出首頁第一頁中的基本資訊!(遍歷上面獲取到的id值)
for i in ajax_list:
    # (2)封裝請求引數(子頁阿賈克斯請求引數)
   child_param={
       "id": i   
    }
   # 設定睡眠時間 0.3秒
   time.sleep(0.3)
    #(3)向子頁阿賈克斯url傳送請求 (先分析使用get() 或者 post(), 然後分析是否是阿賈克斯請求)
   child_response =requests.post(url=child_url,params=child_param, headers=requests_headers )
   page_text = child_response.json()   # 為json資料,所以要用.json
   print(page_text)  # 列印出每次遍歷請求得到的響應資料

   # 3.做資料儲存  (將每次遍歷請求得到的資訊寫入文件)
   fp =open("E:\python例項\爬蟲第一課\例項6:千燈資訊爬取學習案例/響應資料.txt","a",encoding='utf-8') 
   page_data =json.dump(page_text,fp=fp,ensure_ascii=False)
   # 使用dump寫入檔案需要另外寫關閉檔案的語句,dump不像上下文管理器那樣自動關閉檔案,同時這裡
   #也不適合使用上下文管理器!
   
# 全部寫入完成後關閉檔案(釋放資源)
fp.close()


以上是個人日常學習案例,經驗思路總結分享!

相關文章