XInCheng
一万年太久,只争朝夕
XInCheng
python_scrapy入门

这是在中国大学mooc上学习python爬虫的同步笔记

作为刚入门python的新手,个人感觉还是从一个个的项目入手才最好,于是入坑爬虫 :shock:

开始是requests库的安装,windows直接cmd命令提示符:

先看一个例子:爬取我的主页的html页面:

requests库有7个主要方法:

requests.request()  构造一个请求,支撑以下各方法的基础方法
requests.get()         获取HTML网页的主要方法,对应于HTTP的GET
requests.head()       获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post()       向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.put()         向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch()     向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete()   向HTML页面提交删除请求,对应于HTTP的DELETE

r = requests.get(url) 这段代码中,requests.get(url)构造一个向服务器请求资源的request对象,r作为包含服务器返回资源的response对象,我们可以从这个对象中获取所有我们想要的信息。

Requests 简便的 API 意味着所有 HTTP 请求类型都是显而易见的。例如,你可以这样发送一个 HTTP POST 请求:

那么其他 HTTP 请求类型:PUT,DELETE,HEAD 以及 OPTIONS ,都是一样的简单:

传递 URL 参数

你也许经常想为 URL 的查询字符串(query string)传递某种数据。如果你是手工构建 URL,那么数据会以键/值对的形式置于 URL 中,跟在一个问号的后面。例如, httpbin.org/get?key=valRequests 允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。举例来说,如果你想传递key1=value1key2=value2httpbin.org/get,那么你可以使用如下代码:

通过打印输出该 URL,你能看到 URL 已被正确编码:

注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。

你还可以将一个列表作为值传入:

响应内容

我们能读取服务器响应的内容。以 GitHub 时间线为例:

Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。

请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 r.text 之时,Requests 会使用其推测的文本编码。你可以找出 Requests 使用了什么编码,并且能够使用 r.encoding 属性来改变它:

如果你改变了编码,每当你访问 r.text ,Request 都将会使用 r.encoding 的新值。你可能希望在使用特殊逻辑计算出文本的编码的情况下来修改编码。比如 HTTP 和 XML 自身可以指定编码。这样的话,你应该使用 r.content 来找到编码,然后设置 r.encoding 为相应的编码。这样就能使用正确的编码解析 r.text了。

在你需要的情况下,Requests 也可以使用定制的编码。如果你创建了自己的编码,并使用 codecs 模块进行注册,你就可以轻松地使用这个解码器名称作为 r.encoding 的值, 然后由 Requests 来为你处理编码。

 

定制请求头

如果你想为请求添加 HTTP 头部,只要简单地传递一个 dict 给 headers 参数就可以了:

爬取网页的通用代码框架:

2018/5/2/01:16

……睡觉去咯

赞赏

发表评论

textsms
account_circle
email

XInCheng

python_scrapy入门
这是在中国大学mooc上学习python爬虫的同步笔记 作为刚入门python的新手,个人感觉还是从一个个的项目入手才最好,于是入坑爬虫 :shock: 开始是requests库的安装,windows直接cmd命令…
扫描二维码继续阅读
2018-04-20