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]得到第一个匹配结果。
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]得到第一个匹配结果。
相关文章推荐
- Python爬虫之-Requests
- Python爬虫(3):Requests的高级用法
- Python爬虫学习纪要(十):Requests 库学习笔记5
- python爬虫抓站的一些技巧总结
- Python3 大型网络爬虫实战 004 — scrapy 大型静态商城网站爬虫项目编写及数据写入数据库实战 — 实战:爬取淘宝
- python与爬虫技术总结
- python爬虫之requests抓取数据
- 【python爬虫专题】解析方法 <2> Requests库方法总结
- 基于python3.4.3的Requests2.18.4爬虫学习系列之一 安装及初识
- 总结python爬虫抓站的实用技巧
- Python爬虫—3第三方库_1_requests_进阶
- Python入门-编写抓取网站图片的爬虫-正则表达式
- Python爬虫:一些常用的爬虫技巧总结
- Python进阶_6.爬虫中总结的Python
- Python爬虫requests
- Python3 爬虫编写报错及解决方法整理
- Python爬虫之requests
- python简易爬虫编写--图片获取
- python爬虫技术总结
- 零基础写python爬虫之爬虫编写全记录