Python之requests编写爬虫的总结

时隔大半年,当时编写爬虫的时候也没有记录下来一点心得,导致到现在脑子里面还是一片空白。为了以后能够更加清晰高效地编写爬虫程序,今天就来做一下总结。

l  首先,引入第三方库requests。

之前用了urllib2这个库,发现这个库发送的HTTP包Header中,Connection不能选为keep-alive,虽然不懂这个选项的具体含义,但觉得这对于需要登录的网站来说,是不能用的。

引入的方法是import requests。这是一个第三方库,需要单独安装。如果pycharm,那编写完程序之后,点击File->Settings,左边栏选Project->Project Interpreter。然后在右边会列出项目中引入的模块,如果未安装,点击安装即可。

l  Get请求一个网页

最简单的是HTTP的GET来请求一个页面。使用requests模块的get函数。

r =requests.get(url,headers=headers)

其中,传入参数url是一个字符串,即为请求的网页地址。传入参数headers是一个字典,包含HTTP的首部中要包含的一些键值对。

比如,这个项目中的

url ='http://service.bjtu.edu.cn/nav_login'

headers = {

'Host':'service.bjtu.edu.cn',

'Connection':'keep-alive',

'Cookie': 'JSESSIONID=40787E5EEB7D181D8EB7BE0F3FAEA036'

…(省略)

}

返回值r,表示的是网站服务器的回应。r.headers表示HTTP响应的头部,为字典类型,可以使用r.headers[‘set-coookie’]取出相应的值。r.content表示HTTP响应的页面内容,为str字符串类型,直接printr.content就可以看到页面的内容。

l  Post向网站提交数据

看完了Get,再看Post,其实是一模一样的。

res1 =requests.post(url,headers=headers,data=post_data)

传入参数url和headers依然与get函数一样。传入参数data,也是一个字典类型,包含着要提交给网站的表单。

比如:

post_data = {

'checkcode' : ‘4725’,

'Submit' : '登 录',

…(省略)

}

返回值res1,其中res1.content依然代表Post之后服务器的响应内容。

l  使用正则表达式处理数据

引入re模块,import re

正则表达式如何编写这里不讨论,只简单记录Python中re的使用方法。

pattern =re.compile(r'\s*(JSESSIONID=[0-9A-Z]*);\s*Path')

使用re.compile函数编译正则表达式为pattern,可以理解为,传入参数中的正则表达式字符串是让人看得,编译之后的pattern是让机器看的。

result =pattern.findall(input)

input是输入的(大篇幅)文本,pattern.findall从input之中,找到与pattern匹配的内容。result即为匹配的内容,如果至少匹配成功一个,可以使用result[0]得到第一个匹配结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值