一眨眼明天就周末了,一周過的真快!
今天咱們用Python來實現(xiàn)一下動態(tài)網(wǎng)頁數(shù)據(jù)的抓取
最近不是有消息說世界首富馬上要變成中國人了嗎,這要真成了,可就是歷史上首位中國世界首富了!
那我們就以富豪排行榜為例,爬取一下2023年國內(nèi)富豪五百強,最后實現(xiàn)一下可視化分析。
準備工作
環(huán)境使用
- Python
- Pycharm
模塊使用
- re 正則表達式
- csv <表格文件> 內(nèi)置模塊 保存數(shù)據(jù)
- requests >>> 數(shù)據(jù)請求
- pandas >>> 保存表格
- pyecharts >>> 可視化模塊
實現(xiàn)流程: <基本公式>
數(shù)據(jù)來源分析
- 明確需求: 明確采集的網(wǎng)站以及數(shù)據(jù)內(nèi)容
- 目標網(wǎng)址 - 抓包分析: 通過瀏覽器自帶工具 (開發(fā)者工具)
- 打開開發(fā)者工具: F12 / 右鍵點檢查選擇network (網(wǎng)絡(luò))
- 點擊下一頁按鈕
數(shù)據(jù)包地址
代碼實現(xiàn)步驟
- 發(fā)送請求 -> 模擬瀏覽器對于url地址發(fā)送請求
url地址: 分析找到鏈接地址 - 獲取數(shù)據(jù) -> 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)
- 解析數(shù)據(jù) -> 提取我們自己需要數(shù)據(jù)
- 保存數(shù)據(jù) -> 保存到表格文件里面
代碼解析
發(fā)送請求
for page in range(1, 35): print(f'{page}' * 20) # url地址: 請求網(wǎng)址 url = f'https://service.ikuyu.cn/XinCaiFu2/pcremoting/bdListAction.do?method=getPage&callback=jsonpCallback&sortBy=assets&order=asc&type=4&keyword=&pageSize=15&year=2023&pageNo={page}&from=jsonp&_=1700739728273' # 模擬瀏覽器: 請求頭 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36' } # 發(fā)送請求: 請求方法 <開發(fā)者工具> response = requests.get(url=url, headers=headers)
?
獲取數(shù)據(jù)
data = response.text
?
解析數(shù)據(jù)
re.findall(‘匹配數(shù)據(jù)’, ‘數(shù)據(jù)源’) -> 從什么地方去獲取什么數(shù)據(jù)
# json字符串數(shù)據(jù) html = re.findall('jsonpCallback\((.*)', data)[0].replace(')', '') print(html) # 轉(zhuǎn)成json字典 當你轉(zhuǎn)json數(shù)據(jù)報錯的時候 html不是完整json數(shù)據(jù)格式 json_data = json.loads(html) # 鍵值對取值 提取 rows 列表 (根據(jù)冒號左邊的內(nèi)容[鍵], 提取冒號右邊的內(nèi)容[值]) rows = json_data['data']['rows'] # for循環(huán)遍歷 for row in rows:
?
創(chuàng)建文件對象
f = open('data.csv', mode='w', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '財富', '姓名', '主要公司', '相關(guān)行業(yè)', '公司總部省份', '公司總部城市', '性別', '年齡', '年份', ]) csv_writer.writeheader()
?
保存數(shù)據(jù)
dit = { '財富': row['assets'], '姓名': row['name'], '主要公司': row['company'], '相關(guān)行業(yè)': row['industry'], '公司總部省份': row['addr'][:2], '公司總部城市': row['addr'][-2:], '性別': row['sex'], '年齡': row['age'], '年份': row['year'], } csv_writer.writerow(dit) print(row) # 源碼+wei?:python1018 領(lǐng)取
?
采集數(shù)據(jù)+可視化代碼我都打包好了,還有視頻講解,都在最后一段代碼中。
效果展示
文章來源:http://www.zghlxwxcb.cn/news/detail-747282.html
好了,本次分享就到這結(jié)束了,咱們下次見~文章來源地址http://www.zghlxwxcb.cn/news/detail-747282.html
到了這里,關(guān)于簡單的用Python抓取動態(tài)網(wǎng)頁數(shù)據(jù),實現(xiàn)可視化數(shù)據(jù)分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!