Python爬虫实战
Posted stringsir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬虫实战相关的知识,希望对你有一定的参考价值。
需求
抓取2018年四川大学自主招生初审通过名单信息。
具备知识
1.正则表达式。
2.python基础语法,爬虫和数据库操作。
操作
1.抓取网页。
2.解析出需要的数据。
3.继续抓取下一个页面,重复12步骤直到到尾页停止。
4.将解析出来的数据存入数据库。
实例
采用python3.6和mysql
import urllib.request import re import pymysql def 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和读的原因! 原因:‘,e.reason) return page_data def find_all_data(html): pattern = "<tr>[sS]*?<td>(.*?)</td>" "[sS]*?<td>(.*?)</td>" "[sS]*?<td>(.*?)</td>" "[sS]*?<td>(.*?)</td>[sS]*?</tr>" #[sS]*?匹配任意字符 userdata = re.findall(pattern,html) return userdata def 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 = 0 while 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 += 30 add_to_mysql(userdatas)
执行完就成功从网页抓取数据存入数据库中了。
以上是关于Python爬虫实战的主要内容,如果未能解决你的问题,请参考以下文章