本文目錄一覽:
怎樣用python爬取疫情數據
import requests
from bs4 import BeautifulSoup
import re
import json
# 1.發送請求,獲取疫情首頁(數據來源於丁香園)
response = requests.get(”)
home_page = response.content.decode()
# 2.從疫情首頁提取最近一日數據
soup = BeautifulSoup(home_page, ‘lxml’)
script = soup.find(id=’getAreaStat’)
text = script.string
# 3.提取數據獲取json格式數據
json_str = re.findall(r’\[.+\]’, text)[0]
# 4.把json格式轉換為python類型
last_day_corona_virus = json.loads(json_str)
# 5.以json格式保存最近一日數據
with open(‘data/last_day_coronavirus.json’, ‘w’) as fp:
json.dump(last_day_corona_virus, fp, ensure_ascii=False)
python爬蟲可以做什麼
1、收集數據
Python爬蟲程序可用於收集數據,這是最直接和最常用的方法。由於爬蟲程序是一個程序,程序運行得非常快,不會因為重複的事情而感到疲倦,因此使用爬蟲程序獲取大量數據變得非常簡單、快速。
2、數據儲存
Python爬蟲可以將從各個網站收集的數據存入原始頁面數據庫。其中的頁面數據與用戶瀏覽器得到的HTML是完全一樣的。注意:搜索引擎蜘蛛在抓取頁面時,也做一定的重複內容檢測,一旦遇到訪問權限很低的網站上有大量抄襲、採集或者複製的內容,很可能就不再爬行。
3、網頁預處理
Python爬蟲可以將爬蟲抓取回來的頁面,進行各種步驟的預處理。比如提取文字、中文分詞、消除噪音、索引處理、特殊文字處理等。
4、提供檢索服務、網站排名
Python爬蟲在對信息進行組織和處理之後,為用戶提供關鍵字檢索服務,將用戶檢索相關的信息展示給用戶。同時可以根據頁面的PageRank
值來進行網站排名,這樣Rank值高的網站在搜索結果中會排名較前,當然也可以直接使用Money購買搜索引擎網站排名。
5、科學研究
在線人類行為、在線社群演化、人類動力學研究、計量社會學、複雜網絡、數據挖掘等領域的實證研究都需要大量數據,Python爬蟲是收集相關數據的利器。
python爬蟲—爬取LOL雲頂之弈數據
本來是想爬取之後作最佳羈絆組合推算,但是遇到知識點無法消化(知識圖譜),所以暫時先不組合了,實力有限
庫的安裝
1.requests #爬取棋子數據
2.json #棋子數據為js動態,需使用json解析
3.BeautifulSoup
實戰前先新建個lol文件夾作為工作目錄,並創建子目錄data,用於存放數據。
1.爬取數據,新建個py文件,用於爬取雲頂數據,命名為data.py
1.1定義個req函數,方便讀取。//需設定編碼格式,否則會出現亂碼
def Re_data(url):
re = requests.get(url)
re.encoding = ‘gbk’
data = json.loads(re.text)
return data[‘data’]
1.2定義個Get函數,用於讀取數據並使用保存函數進行保存數據,保存格式為json。
def Get_data():
# 獲取數據並保存至data目錄
base_url = ”
chess = Re_data(base_url + ‘chess.js’)
race = Re_data(base_url + ‘race.js’)
job = Re_data(base_url + ‘job.js’)
equip = Re_data(base_url + ‘equip.js’)
Save_data(chess,race,job,equip)
1.3定義save函數實現讀取的數據進行文件保存,保存目錄為工作目錄下的data文件夾。
def Save_data(t_chess,t_race,t_job,t_equip):
with open(‘./data/chess.json’,’w’) as f:
json.dump(t_chess,f,indent=’\t’)
with open(‘./data/race.json’,’w’) as f:
json.dump(t_race,f,indent=’\t’)
with open(‘./data/job.json’,’w’) as f:
json.dump(t_job,f,indent=’\t’)
with open(‘./data/equip.json’,’w’) as f:
json.dump(t_equip,f,indent=’\t’)
1.4定義主函數main跑起來
if __name__ == ‘__main__’:
start = time.time()
Get_data()
print(‘運行時間:’ + str(time.time() – start) + ‘秒’)
至此,數據爬取完成。
2.種族和職業進行組合。
2.1未完成 //未完成,使用窮舉方法進行組合會出現內存不夠導致組合失敗(for循環嵌套導致數組內存超限)
//待學習,使用知識圖譜建立組合優選,可參考:
期間遇到的問題:
1.爬取棋子數據時為動態js加載,需通過json模塊的loads方法獲取
2.3層for循環嵌套數據量大,導致計算失敗,需優化計算方法。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/280337.html