python爬虫小实例

python爬虫小实例

介绍几个爬虫使用的基本模块与库:
re #正则表达式,urllib库,requests库,BeautifulSoup库以及workbook库。

对于以上的几个库,进行简单介绍
openpyxl.workbook # Python中操作Excel的workbook库和openpyxl模块
re正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符。
在线匹配工具: http://www.regexpal.com/http://rubular.com/
正则匹配软件:McTracer 支持将正则导成对应的语言如java C# js等直接帮你转写成你需要的语言,Copy直接用就行了很方便,另外支持把正则表达式用法解释,如哪一段是捕获分组,哪段是贪婪匹配等等,总之用起来 So Happy .

Urllib 库,它是 Python 内置的 HTTP 请求库,也就是说我们不需要额外安装即可使用,它包含四个模块:
第一个模块 request,它是最基本的 HTTP 请求模块,我们可以用它来模拟发送一请求,就像在浏览器里输入网址然后敲击回车一样,只需要给库方法传入 URL 还有额外的参数,就可以模拟实现这个过程了。(urllib.request:打开和读取url)
第二个 error 模块即异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作保证程序不会意外终止。
第三个 parse 模块是一个工具模块,提供了许多 URL 处理方法,比如拆分、解析、合并等等的方法。
第四个模块是 robotparser,主要是用来识别网站的 robots.txt 文件(爬虫协议),然后判断哪些网站可以爬,哪些网站不可以爬的,其实用的比较少。

requests库是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库。它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。是python实现的最简单易用的HTTP库,建议爬虫使用requests,它的7个主要方法:
在这里插入图片描述
BeautifulSoup库是灵活又方便的网页解析库,处理高效,支持多种解析器。利用它不用编写正则表达式即可方便地实现网页信息的提取。
在这里插入图片描述
对于Python库的安装,需要在电脑命令行中使用pip install 库名进行安装如:pip install requests
在这里插入图片描述

现在就来爬取一下2018年中国最富有1000人
http://finance.sina.com.cn/zt_d/jmzf2018/
在这里插入图片描述

第一步,导入库

import re
import urllib.request  
#urllib库是Python自带的库,大家也可以使用第三方库requests
from openpyxl import Workbook

第二步,使用re 爬取2018中国最有钱的1000人网站中的表格

#定义获取用户资源链接的函数
url = 'http://finance.sina.com.cn/zt_d/jmzf2018/'   #定义目标URL
Sheet1_title = '2018年中国最有钱1000人'
 
def get_html(url):
    headers = {  
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
    }  #对于网页反爬虫采取的举措,消息头
    request = urllib.request.Request(url, headers=headers) 
    response = urllib.request.urlopen(request)  '''发起请求(GET)--向指定的url发送请求,并返回服务器响应的类文件对象'''
    data = response.read().decode('utf-8') '''read()获取响应体的内容,内容是bytes字节流,需要转换成字符串'''
    return data

headers 参数是一个字典,这个就是 Request Headers 了,你可以在构造 Request 时通过 headers 参数直接构造,也可以通过调用 Request实例的add_header() 方法来添加, Request Headers 最常用的用法就是通过修改 User-Agent 来伪装浏览器,默认的 User-Agent 是 Python-urllib,我们可以通过修改它来伪装浏览器。

#定义抓取内容的函数
def get_word(data):
    pattern = re.compile(r'<td>.+</td>')  #进行正则表达式编译
    list = re.findall(pattern, data)
    return list

def do_list(list):
    list_s = []
    s = 0
    list_m = []
    for i in list:
        if s % 7 == 0 and s > 0:
            list_s.append(list_m)
            list_m = []
        i = i.lstrip('<td>')    # 数据格式处理
        i = i.rstrip('</td>')
        i = i.strip('&nbsp;')
        i = i.replace('amp;', '')
        list_m.append(i)  # 循环6次,然后将m放入s中
        s += 1
    return list_s
 
#定义将抓取的内容进行Excel处理并保存的函数 
def excel(list_s):
    wb = Workbook()
    ws1 = wb.active
    ws1.title = Sheet1_title
 
    ws1['A1'] = '排名'
    ws1['B1'] = '姓名'
    ws1['C1'] = '财富(亿元)'
    ws1['D1'] = '年龄'
    ws1['E1'] = '性别'
    ws1['F1'] = '主要财富来源'
    ws1['G1'] = '主要公司所在地'
 
    s = 2
    for (num, name, money, age, sex, comp, add) in list_s:
        col_A = 'A%s' % s
        col_B = 'B%s' % s
        col_C = 'C%s' % s
        col_D = 'D%s' % s
        col_E = 'E%s' % s
        col_F = 'F%s' % s
        col_G = 'G%s' % s
        ws1[col_A] = num
        ws1[col_B] = name
        ws1[col_C] = money
        ws1[col_D] = age
        ws1[col_E] = sex
        ws1[col_F] = comp
        ws1[col_G] = add
        s += 1
    wb.save(filename='2018年中国最有钱1000人.xlsx')  #数据存储
    return
 

data = get_html(url)  
list = get_word(data)
list_s = do_list(list)
excel(list_s)    

爬取结果:
在这里插入图片描述在这里插入图片描述
大家也可是试一试2019年的http://finance.sina.com.cn/zt_d/2018zgzf1000/
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值