標籤:exe name 資料庫操作 import read utf8 https urllib .exe
需求
抓取2018年四川大學自主招生初審通過名單資訊。
具備知識
1.Regex。
2.python基礎文法,爬蟲和資料庫操作。
操作
1.抓取網頁。
2.解析出需要的資料。
3.繼續抓取下一個頁面,重複12步驟直到到尾頁停止。
4.將解析出來的資料存入資料庫。
執行個體
採用python3.6和mysql
import urllib.requestimport reimport pymysqldef catch_page(url_addr): try: page_data = urllib.request.urlopen(url_addr).read() except urllib.URLError as e: if hasattr(e,‘code‘): print(‘伺服器不能接受請求 錯誤碼:‘,e.code) elif hasattr(e,‘reason‘): print(‘無法抵達伺服器,請檢查url和讀的原因!\n 原因:‘,e.reason) return page_datadef find_all_data(html): pattern = "<tr>[\s\S]*?<td>(.*?)</td>" "[\s\S]*?<td>(.*?)</td>" "[\s\S]*?<td>(.*?)</td>" "[\s\S]*?<td>(.*?)</td>[\s\S]*?</tr>" #[\s\S]*?匹配任一字元 userdata = re.findall(pattern,html) return userdatadef add_to_mysql(userdatas): conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘root‘, db=‘scdx_zzzs_db‘, charset=‘utf8‘) cursor = conn.cursor() for userdata in userdatas: sql = "insert into student(name,sex,school,province) values(‘%s‘,‘%s‘,‘%s‘,‘%s‘);" % (userdata[0], userdata[1], userdata[2], userdata[3]) try: cursor.execute(sql) print("√執行成功----->>" + sql) except: print("×執行失敗----->>" + sql) conn.commit() cursor.close() conn.close()userdatas = []i = 0while i<=3300: url = "https://gaokao.chsi.com.cn/zzbm/mdgs/detail.action?oid=476754340&lx=1&start=%d" % i html = catch_page(url).decode() userdatas.extend(find_all_data(html)) print(i) i += 30add_to_mysql(userdatas)
執行完就成功從網頁抓取資料存入資料庫中了。
Python爬蟲實戰