日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python爬虫之旅_TWO

發布時間:2024/9/30 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫之旅_TWO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

ONE中了解了爬蟲和requests模塊的基本使用,這次就來跟著老師來做一個綜合性的案例

0x00:案例說明

這次要爬取的是化妝品企業具體的生產許可信息

0x01:進行分析

首先要判斷這個頁面出現的企業的信息是否是動態加載出來的還是隨著該url直接出現的

可以F12查看一下也可以寫一個py腳本爬取一下
捕獲到了該頁面的數據,可以查詢一下企業名稱是否在該數據中即可驗證信息是通過何種方式加載的

查詢企業名稱是沒有的,說明該頁面的信息數據是通過動態加載出來即(Ajax)

那我們就捕獲一下Ajax請求
果然是動態加載出來的

可以看到參數等,這里就先總結一下查到的信息

#頁面信息通過動態加載出來 Request URL: http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList Request Method: POST Content-Type: application/json;charset=UTF-8

既然這個頁面信息我們已經分析好了,那接下來就看公司的具體許可信息,隨便點進去一個,看到有如下信息

這里還需要進行分析一下,信息是通過該鏈接直接呈現出來了還是通過動態加載出來的,方法和剛才分析首頁一樣,我這里就直接查看Ajax請求,發現確實有

查看一下,參數只有id一個

多試幾個企業便會發現這個url是不變的,唯一變的便是參數id

到這里為止,再統計一下該頁面查到的信息

#信息也是通過動態加載出來的 Request URL: http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById Request Method: POST Content-Type: application/json;charset=UTF-8

分析過后,就來寫出爬取代碼

0x02:進行爬取

先將首頁的json串格式化一下,便于觀看

格式化后,發現是一個字典,llist是一個列表,列表中又包含字典,便可以遍歷value值,從而可以得到ID值
這個時候我們收集的信息就要用到了

import requestsif __name__ == '__main__':#首頁url,用于獲取企業ID號url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'#UA偽裝headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}#導入參數data = {'on': 'true','page': '1','pageSize': '15','productName':'','conditionType': '1','applyname':'','applysn':'',}#建立一個空列表永遠存儲ID值id_message = []#發起請求message = requests.post(url=url,data=data,headers=headers).json()#數據是一個字典,而list的value值中包含ID值,所以需要從value值中取出ID值for dict in message['list']:id_message.append(dict['ID'])print(id_message)

爬取后就會發現這樣就可以得到這一頁所有企業的ID

那么ID拿到了,企業的具體許可信息便可以通過ID的來展示出來

import requests import json if __name__ == '__main__':url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'#UA偽裝headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}#導入參數data = {'on': 'true','page': '1','pageSize': '15','productName':'','conditionType': '1','applyname':'','applysn':'',}#建立一個空列表永遠存儲ID值id_message = []#建立一個存儲企業詳細信息的列表all_date = []#發起請求message = requests.post(url=url,data=data,headers=headers).json()#數據是一個字典,而list的value值中包含ID值,所以需要從value值中取出ID值for dict in message['list']:id_message.append(dict['ID'])#根據ID號獲得企業的詳細數據date_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'#遍歷ID列表for id in id_message:datas = {'id': id}detail_message = requests.post(url=date_url,data=datas,headers=headers).json()# print(detail_message)#列表中存儲all_date.append(detail_message)#存儲到本地fp = open('message.txt','w',encoding='utf-8')json.dump(all_date,fp=fp,ensure_ascii=False,indent=4)print("爬取成功咯")


這樣就爬取成功了,如果想要爬取更多頁面也不麻煩只需將'page': '1'這個參數設置為動態即可

0x03:最終代碼

import requests import json if __name__ == '__main__':url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'#UA偽裝headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}# 建立一個空列表永遠存儲ID值id_message = []# 建立一個存儲企業詳細信息的列表all_date = []#查詢多頁數據,添加一個循環即可for page in range(1,3):#轉換為字符類型page = str(page)#導入參數data = {'on': 'true','page': page,'pageSize': '15','productName':'','conditionType': '1','applyname':'','applysn':'',}#發起請求message = requests.post(url=url,data=data,headers=headers).json()#數據是一個字典,而list的value值中包含ID值,所以需要從value值中取出ID值for dict in message['list']:id_message.append(dict['ID'])#根據ID號獲得企業的詳細數據date_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'#遍歷ID列表for id in id_message:datas = {'id': id}detail_message = requests.post(url=date_url,data=datas,headers=headers).json()# print(detail_message)#列表中存儲all_date.append(detail_message)#存儲到本地fp = open('message.txt','w',encoding='utf-8')json.dump(all_date,fp=fp,ensure_ascii=False,indent=4)print("爬取成功咯")

爬取的信息

總結:

這次通過案例的訓練,掌握了分析方法,接下來學習數據解析

繼續加油,向著優秀的方向前進!!

總結

以上是生活随笔為你收集整理的Python爬虫之旅_TWO的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。