爬虫之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. 六种方式读取properties资源文件

    conf.properties文件内容: reportStationName=xx供电局 JBM=0318 文件路径: 其中xxx为项目名 import java.io.BufferedInputSt ...

  2. 菜鸟手下的iOS开发笔记(swift)

    在阳春4月的一天晨会上,有一个老板和蔼的对他的一个菜鸟手下说:“你既然会Android,那你能不能开发iOS?” 不是说好的要外包的吗?内心跌宕,但是表面淡定的菜鸟手下弱弱的回道:“可以试试”. 第二 ...

  3. require 和 import 区别

    我很懵逼啊  都是在引用模块,那到底用哪个? 参考:https://www.cnblogs.com/hwldyz/p/9145959.html 看来会明白一点的 首先这两个都是为了JS模块化编程使用. ...

  4. https://scrapingclub.com/exercise/basic_login/

    遇到的问题:csrftoken cfduid 是在request.headers里面的,一直在找怎么在scrapy里get request.header,从scrapy shell ,then fet ...

  5. 第五篇——Struts2的默认Action

    默认Action 1.当访问action不存在时,可以通过制定默认action的方式避免出现错误代码页面: 2.使用default-action-ref 指定默认 action. 项目实例 1.项目结 ...

  6. 使用CI遇到的问题报错:Call to undefined function base_url()

    问题来源:在HTML文件中使用base_url()函数引入CSS文件时,发现报错:Call to undefined function base_url() 研究了一下才知道是因为没有加载url小助手 ...

  7. function的toString方法

    javascript的创建多行字符串的除了平时常见的”“+ 反斜杠\ 还有ES6的` ` 在js51上发现一个很有意思的方法 function heredoc(fn) { return fn.toSt ...

  8. 谷歌技术"三宝"之BigTable

    转自:https://blog.csdn.net/OpenNaive/article/details/7532589 2006年的OSDI有两篇google的论文,分别是BigTable和Chubby ...

  9. 算法(第四版)C# 习题题解——1.1

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 善用 Ctrl + F 查找题 ...

  10. 启动docker容器时的Error response from daemon: devmapper: Error mounting: invalid argument. 错误解决

    错误出现 在一台物理机重启后,以前创建的容器无法启动了.一启动,则会报出错误. [root@217TN1V ~]# docker start e7e Error response from daemo ...