本周要求实现爬取网页数据,一开始打算用java实现,发现实在写不通便选择学习爬取数据常用语言——python。
1 import requests 2 from bs4 import BeautifulSoup 3 import re 4 import pymysql 5 import json 6 import datetime 7 #记录执行次数 8 num=0 9 #向数据库写入数据 10 def insertdata(data,n): 11 conn=pymysql.connect("localhost","root","Inazuma","paqu",charset='utf8') 12 cur=conn.cursor() 13 sql="INSERT INTO yiqing(Date,Province,City,Confirmed,Cured,Dead) VALUES(%s,%s,%s,%s,%s,%s)" 14 try: 15 cur.execute(sql,data) 16 conn.commit() 17 print(n) 18 except: 19 conn.rollback() 20 print("ERROR") 21 conn.close() 22 #所要爬取的网站的地址 23 url = 'https://raw.githubusercontent.com/BlankerL/DXY-2019-nCoV-Data/master/json/DXYArea.json' 24 #调用requests.get()方法 25 response = requests.get(url) 26 #转换为文本 27 version = response.text 28 #提取其中的json数据 29 jsonData = json.loads(version) 30 #根据数据进行筛选写入 31 for i in range(len(jsonData['results'])): 32 if(jsonData['results'][i]['countryName']=='中国'): 33 province = jsonData['results'][i]['provinceName'] 34 for j in range(len(jsonData['results'][i]['cities'])): 35 confirmed=jsonData['results'][i]['cities'][j]['confirmedCount'] 36 cured=jsonData['results'][i]['cities'][j]['curedCount'] 37 dead=jsonData['results'][i]['cities'][j]['deadCount'] 38 city=jsonData['results'][i]['cities'][j]['cityName'] 39 #使用python中datetime的方法提取时间(yyyy-mm-dd) 40 date=datetime.date.today() 41 #提取数据完成,执行操作,num+1 42 num=num+1 43 #调用入库方法 44 insertdata((date,province,city,confirmed,cured,dead),num)
可以看到python爬取数据十分简单,44行代码就解决了(雾)。这是我第一次自学python,在刚开始编写的时候有很多地方不懂,参考了很多资料才得以完成,而且这里编写还需要连接数据库。在下载各种包的时候,我使用的是控制窗输入pip命令的方法,这似乎是python特有的下载模式,我认为十分好用。