您的位置:首页 > 编程语言 > Python开发

Python之requests编写爬虫的总结

2018-02-28 15:39 357 查看
时隔大半年,当时编写爬虫的时候也没有记录下来一点心得,导致到现在脑子里面还是一片空白。为了以后能够更加清晰高效地编写爬虫程序,今天就来做一下总结。
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]得到第一个匹配结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: