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爬虫实战的主要内容,如果未能解决你的问题,请参考以下文章

scrapy主动退出爬虫的代码片段(python3)

分享《Python 3网络爬虫开发实战》中文PDF+源代码

分享《Python 3网络爬虫开发实战》中文PDF+源代码

网络爬虫开发实战2和一的区别

分享《Python 3网络爬虫开发实战》中文PDF+源代码+崔庆才

Python爬虫实战,只需30行代码,美女图片装满24GU盘