作業(爬取藥監總局)
- 需求:爬取藥監總局中的企業詳情資料,每一家企業詳情頁對應的詳情資料(爬取前5頁企業)
- url: http://125.35.6.84 :81/xk/
- 分析:
- 企業詳情資料是否為動态加載資料?
- 捕獲動态加載的資料
- 基于抓包工具進行全局搜尋。
- 定位到的資料包提取的
-
- :81/xk/itownet/portalAction.do?method=getXkzsById
-
- 請求參數:
- id: 536878abac734332ae06dcb1a3fbd14a
- id: 950d66fbf8714fbc9e799010e483d2d5
- 結論:每一家企業詳情資料對應的請求url和請求方式都是一樣的,隻有請求參數id的值不一樣。
- 如果我們可以将每一家企業的id值捕獲,則就可以将每一家企業詳情資料進行爬取。
- 捕獲企業的id
- 企業的id表示的就是唯一的一家企業。我們就猜測企業id可能會和企業名稱捆綁在一起。
- 在首頁中會有不同的企業名稱,則我們就基于抓包工具對首頁的資料包進行全局搜尋(企業名稱)
- :81/xk/itownet/portalAction.do?method=getXkzsList
- 方式:post
-
- on=true&page=1&pageSize=15&productName=&conditionType=1&applyname=&applysn=
import requests
#擷取每一家企業的id值,去首頁分析查找對應企業的id值
url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
data = {
'on': 'true',
'page': '1',
'pageSize': '15',
'productName': '',
'conditionType': '1',
'applyname': '',
'applysn': '',
}
response = requests.post(url=url,headers=headers,data=data)
all_company_list = response.json()['list']
for dic in all_company_list:
_id = dic['ID']
# print(_id)
#将id作為請求企業詳情資料url的請求參數
detail_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
data = {
'id':_id
}
response = requests.post(url=detail_url,headers=headers,data=data)
company_detail_dic = response.json()
person_name = company_detail_dic['businessPerson']
addr = company_detail_dic['epsProductAddress']
print(person_name,addr)
import requests
#捕獲多頁資料
#擷取每一家企業的id值,去首頁分析查找對應企業的id值
url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
for page in range(1,6):
data = {
'on': 'true',
'page': str(page),
'pageSize': '15',
'productName': '',
'conditionType': '1',
'applyname': '',
'applysn': '',
}
response = requests.post(url=url,headers=headers,data=data)
all_company_list = response.json()['list']
for dic in all_company_list:
_id = dic['ID']
# print(_id)
#将id作為請求企業詳情資料url的請求參數
detail_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
data = {
'id':_id
}
response = requests.post(url=detail_url,headers=headers,data=data)
company_detail_dic = response.json()
person_name = company_detail_dic['businessPerson']
addr = company_detail_dic['epsProductAddress']
print(person_name,addr)