Pyhon网络爬虫
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pyhon网络爬虫相关的知识,希望对你有一定的参考价值。
就像学驾照你需要一台车,幸运的是我们的爬虫在上一篇已经选择了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网络爬虫的主要内容,如果未能解决你的问题,请参考以下文章