码迷,mamicode.com
首页 > 其他好文 > 详细

Pyhon网络爬虫(二)

时间:2017-09-09 14:38:20      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:url   www.   try   检查   charset   let   ams   代码   属性   

就像学驾照你需要一台车,幸运的是我们的爬虫在上一篇已经选择了Pyhton,恭喜你,这是一辆自动档的车,相信你可以愉快轻松的上路

我们学习第一步:requests库

我们的爬虫如何进入网络,路在哪里?

   URL便是我们的入口,网络上的资源全部都可以通过URL链接得到

   URL的格式 

我们利用requests库可以轻松,通过URL访问网络

 (1)安装requests库 Windows 平台 运行 cmd,执行pip install requests

        (安装出问题,请检查配置环境变量)

(2)尝试第一个程序,比如访问百度

1 import requests                
2 url = "http://www.baidu.com"
3 re = requests.get(url)
4 print(re.text[0:1000])

上面就是一个最基本的爬虫,我们只是用了几行代码就实现了这个功能,是不是轻松愉快?

上面的程序通过get方法,成功的访问了百度,并获得了页面的信息,先不用了解这些信息的含义,我们先重点关注requests的get方法,这些方法如果你对HTTP协议稍微有所了解的话,你应该就猜到这些方法帮你实现了相应的http协议,你仅需调用这些方法就可以。                               

重点分析requests.get()方法:

r = requests.get(url) 构造一个向服务器请求资源的Request对象,返回一个包含服务器资源的Response对象

当然还可以带其他参数

requests.get(url, params=None, **kwargs)

url : 拟获取页面的url链接
? params : url中的额外参数,字典或字节流格式,可选
? **kwargs: 12个控制访问的参数

我们可以看一下这个第二个参数的用法,我们打开百度输入博客园搜索,我们在浏览器看到是这样一个链接

https://www.baidu.com/s?wd=博客园

当然后面可能还会跟很多参数,我们先忽略

1 import requests
2 params = {"wd":"博客园"}
3 url = "http://www.baidu.com/s"
4 re = requests.get(url,params)
5 print(re.text[0:1000]

 

我们可以看到返回了百度搜索博客园的信息

我们还要再看一下返回的对象有哪些属性

Response 属性 说明

r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败

r.text HTTP响应内容的字符串形式,即,url对应的页面内容
r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式

我们必须要考虑到一些情况一个是如果请求错误该如何?(错误会有很多原因url错误,无法连接)

第二是编码的问题,知道正确的编码编码我们才能后续更好的去处理数据

r.encoding:如果header中不存在charset,则认为编码为ISO‐8859‐1
r.text根据r.encoding显示网页内容
r.apparent_encoding:根据网页内容分析出的编码方式
可以看作是r.encoding的备选

所以需要对上面的属性了解并合理使用

我们修改下代码:

 

 1 import requests
 2 params = {"wd":"博客园"}
 3 url = "http://www.baidu.com/s"
 4 try:   
 5     re = requests.get(url,params)
 6     re.raise_for_status()
 7     re.encoding = re.apparent_encoding
 8     print(re.text[0:1000])
 9     
10 except:
11     print("产生错误")

 

以下是requests库的几个组要方法

方法              说明
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

Pyhon网络爬虫(二)

标签:url   www.   try   检查   charset   let   ams   代码   属性   

原文地址:http://www.cnblogs.com/MooBye/p/7498067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!