爬虫之requests 库的基本用法

基本请求:

requests库提供了http所有的基本请求方式。例如

r = requests.post("http://httpbin.org/post")
r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")

基本GET请求

最基本的GET请求可以直接用get方法

r = requests.get("http://httpbin.org/get")

如果想要加参数,可以利用 params 参数

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print r.url

结果:

http://httpbin.org/get?key1=value1&key2=value2

基本POST请求

对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data 这个参数。

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
print r.text

结果:

{
"args": {},
"data": "",
"files": {},
"form": {
"key1": "value1",
"key2": "value2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"json": null,
"origin": "221.232.171.232",
"url": "http://httpbin.org/post"
}

可以看到参数传成功了,然后服务器返回了我们传的数据。

有时候我们需要传送的信息不是表单形式的,需要我们传JSON格式的数据过去,所以我们可以用 json.dumps() 方法把表单数据序列化。

import json
import requests url = 'http://httpbin.org/post'
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))
print(r.text)

结果:

{
"args": {},
"data": "{\"some\": \"data\"}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"json": {
"some": "data"
},
"origin": "221.232.171.232",
"url": "http://httpbin.org/post"
}

例子一:

import requests

r = requests.get('http://cuiqingcai.com')
print type(r)
print r.status_code
print r.encoding
#print r.text
print r.cookies

结果:

<class 'requests.models.Response'>
200
UTF-8
<RequestsCookieJar[]>

例子二:

import requests
import scrapy
from lxml import etree
url='https://book.douban.com/subject/1083428/comments/'
r=requests.get(url).text
s=etree.HTML(r)
file=s.xpath('//*[@id="comments"]/ul/li/div[2]/p/text()')
print(file)

结果:

['影响当今的偶像剧、言情小说太多太多了,绝对是言情小说的源头啊……不过可惜现在的偶像剧、小说只学到奥斯汀的套路,却缺乏那一种敏锐感以及对社会的鞭挞,因此沦为娱乐的工具。以此看来,奥斯汀值得经典', '女人和男人写出来的东西真是不一样。同样是爱情,女人事无巨细的小世界,充满细碎的心理和对话描写,而站在男人的世界,无非就是爱与不爱了', '女孩儿爱这本书就像男孩爱基督山伯爵一样', '开启kindle扫击名著模式。', '误会是必然的,谅解是偶然的,相爱是偶然中的偶然。', '现实中也许会有伊丽莎白,却不太会有达西,所以伊丽莎白会变成剩女', '不!好!看!翻译腔重!全是无趣对话!剧情毫无亮点!弃!', '心心念念达西先生,却被一条点评泼得满脸冷水,她写到,Jane Austen 说过世界上没有达西生生。', '受不了奥斯丁的所有小说,一堆女人男人磨磨蹭蹭叽叽歪歪,烦死了', '简是把所有实现不了的梦都寄托在这本书中了,\n快35岁的单身身份读着这个故事,也会为书中的大团圆结局高兴,但真的也只是看看而已了。\n最近看的童话故事太多,不利于身心健康。20131229', '一出场人物的各自性格都设定好了,矛盾冲突也做好了铺垫,作者就放心地设计一场又一场好戏,果然是适合改编成影视剧。印象特别深刻的是女主人公伊丽莎白特别喜欢“大叫”,见到亲人激动地大叫,看到来信“不禁大叫起来”……', '不过又是一个王子跟灰姑娘的故事罢了', '类似唐顿庄园。。书一般吧,没感觉多经典。两对爱情,从认识写到结婚,一年时间。一对从开始就有好感,一对从开始没好感,不过最后都幸福在一起了。有钱,有美貌。。感觉那些女人的生活真是枯燥啊,如果没有舞会,也就太死气沉沉了。。。', '那个用求婚来表示我爱你的年代让人颠倒沉沦', '亮点在何处..', '莉兹的独立和聪明,简的善良和宽容,搭配上她们漂亮的脸蛋儿,都是很迷人的。然而简奥斯丁太刻薄了,而这刻薄所针对的,除了那位贵族老寡妇,全是自己最亲近的人,愚蠢的妈妈,没有同情心的父亲,势利眼的表亲,放荡的姊妹…未免太无情了一点。从女人那里,你更明白爱情的发生,是建立在很多现实的条件基础之上的', '无语', '达西先生是我童年偶像心中白马王子', '我讨厌这本书。', '是翻译的有问题?好玻璃心吧反正就感觉']

Python爬虫之requests的更多相关文章

  1. 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块

    孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...

  2. Python爬虫练习(requests模块)

    Python爬虫练习(requests模块) 关注公众号"轻松学编程"了解更多. 一.使用正则表达式解析页面和提取数据 1.爬取动态数据(js格式) 爬取http://fund.e ...

  3. python爬虫之requests库

    在python爬虫中,要想获取url的原网页,就要用到众所周知的强大好用的requests库,在2018年python文档年度总结中,requests库使用率排行第一,接下来就开始简单的使用reque ...

  4. Python 爬虫二 requests模块

    requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...

  5. python爬虫之requests库介绍(二)

    一.requests基于cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们 ...

  6. Python爬虫之requests库介绍(一)

    一:Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 ...

  7. Python爬虫之requests模块(1)

    一.引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃 ...

  8. Python爬虫之requests模块(2)

    一.今日内容 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 二.回顾 xpath的解析流程 bs4的解析流程 常用xpath表达式 常用bs4解析方法 三. ...

  9. python爬虫值requests模块

    - 基于如下5点展开requests模块的学习 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能强大,用法简洁高效.在 ...

随机推荐

  1. std::bind学习

    std::bind bind是对C++98标准中函数适配器bind1st/bind2nd的泛化和增强,可以适配任意的可调用对象,包括函数指针.函数引用.成员函数指针和函数对象. bind接受的第一个参 ...

  2. 基于容器与微服务架构的Web应用示例eShopOnContainers

    简介 微软官方提供了一个基于Docker和微服务的示例应用eShopOnContainers:它使用了面向服务的架构并且从服务端到客户端都是跨平台的:该架构使用通过http作为客户端与服务端直接的通信 ...

  3. centos----------防火墙firewalld和iptables

    1.CentOS7默认的防火墙不是iptables,而是firewalle. 关闭防火墙 systemctl stop firewalld 启用防火墙 systemctl start firewall ...

  4. CentOS 7 使用SVN+Apache搭建版本控制服务器

    svn简介 Subversion是一个免费/开源的版本控制系统, Subversion 可以跨越时间地对文件和目录, 以及它们的修改进行管理. 这就允许你恢复 数据的旧版本, 或检查数据的修改历史. ...

  5. nor flash与nand flash启动的简单比较--APPLE的ARM学习笔记一

    2010-10-08 22:26:00 A,nor flash与nand flash的一些区别 1)接口区别: NOR FLASH地址线和数据线分开,来了地址和控制信号,数据就出来. NAND Fla ...

  6. Windows cmd 一些命令

    运行是Windows的必要组成部分,可以简单理解为一个应用程序快速调用的组件.通过“运行”窗口,可以调用Windows中任何应用程序甚至DOS命令.一般可以搜索百度百科 微软件(窗口) + R    ...

  7. SQL小结1

    #数据表的查询框架: select [all | distinct] select_list from tb_name [where 查询条件] [group by <group_by_expr ...

  8. No Directionality widget found

    The problem is not that you have not wrapped your widgets into MaterialApp. As the documentation say ...

  9. PHP 订单延时处理:延迟队列(未鉴定)

    PHP 订单延时处理:延迟队列: https://github.com/chenlinzhong/php-delayqueue

  10. TCP之种种连接异常

    1. connect出错: (1) 若TCP客户端没有收到syn分节的响应,则返回ETIMEOUT错误:调用connect函数时,内核发送一个syn,若无响应则等待6s后再发送一个,若仍然无响应则等待 ...