python爬虫时http协议以及实现代码

http协议请求主要分为6种类型,各类型的主要作用如下:

1)get请求:get请求会通过url网址传递信息,可以直接在url中写上要传递的信息,也可以由表单进行传递。如果使用表单进行传递,这表单中的信息会自动转为url地址中的数据,通过url地址传递。

2)post请求:可以向服务器提交数据,是一种比较主流也比较安全的数据传递方式,比如在登录时,经常使用post请求发送资源。

3)put请求:请求服务器存储一个资源,通常要指定存储的位置。

4)delete请求:请求服务器删除一个资源。

5)head请求:请求获取对应的http报头信息。

6)options请求:可以获得当前url所支持的请求类型。

这六种类型比较常用。不常用的还有

7)trace请求:主要用于测试或诊断。

8)connect请求

最常用的还是get请求跟post请求。

get请求:网址的格式是:“http://www.baidu.com/s?wd=关键词”

例子:要实现爬虫自动地在百度上查询关键词为hello的结果

代码如下:

import urllib.request
keyword="hello"
url="http://www.baidu.com/s?wd="+keyword
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read()
fhandle=open("E:/untitled1/.idea/4.html","wb")
print(fhandle.write(data))#写入对应数据data
fhandle.close()#关闭文件
但是如果当keyword是中文的时候,此段代码就会出现错误

那么应该如何修改呢?
代码如下:
import urllib.request
url="http://www.baidu.com/s?wd="
keyword="杨强"
key_code=urllib.request.quote(keyword)#quote编码  unquote解码
url_all=url+key_code
req=urllib.request.Request(url_all)
data=urllib.request.urlopen(req).read()
fhandle=open("E:/untitled1/.idea/5.html","wb")
print(fhandle.write(data))#写入对应数据data
fhandle.close()#关闭文件
通过以上实例,如果要使用get请求,思路如下:

1)构建对应的url地址,该url地址包含get请求的字段名和字段内容等信息,并且url地址满足get请求的格式,
即“http://网址?字段名1=字段内容1&字段名2=字段内容2”
2)以对于的url为参数,构造request对象
3)通过urlopen()打开构建的request对象
4)按需求进行后续的处理操作,比如读取网页的内容,将内容写入文件等。
post请求:进行注册登录等操作时都会遇到post请求
登录的时候我们需要用到cookie的知识。
测试使用的网址:http://www.iqianyue.com/mypost/
此时要实现爬虫,就需要用到post请求。实现的思路如下:
1)设置好url网址
2)构建表单数据,并使用urllib.parse.urlencode对数据进行编码处理
3)创建request对象,参数包括url地址和要传递的数据
4)使用add_header()添加头信息,模拟浏览器进行爬取
5)使用urllib.request.urlopen()打开对应的request对象,完成信息的传递
6)后续处理,比如读取网页内容,将内容写入文件等。
代码如下:
import urllib.request
import urllib.parse
url="http://www.iqianyue.com/mypost/"
postdata=urllib.parse.urlencode({"name":"python@iqianyue.com","pass":"qwe123456"}).encode("utf-8")
req=urllib.request.Request(url,postdata)
req.add_header("User-Agent","User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
data=urllib.request.urlopen(req).read()
fhandle=open("E:/untitled1/.idea/5.html","wb")
print(fhandle.write(data))#写入对应数据data
fhandle.close()#关闭文件

                           ---------来着《精通python网络爬虫》第四章的读书笔记







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值