废话很少说,赶忙开始这条不归路吧html
无思路不成器,若是你怎么想都想不出爬虫的原理,不妨来看下咱们平时是如何上网的,大概就是这样:
①点开目标网址→→[可选:登陆/回复]→→②浏览全页筛选出价值内容→→③若是很喜欢,还会拷贝下载回来python
因此爬虫归结起来也就这几步:chrome
本节学习的requests模块将会实现二,三步,其余步骤和注意事项将会在后续文章中展现出来。json
这是浏览器自带的工具,提供抓包和检查网页源码的功能,供使用者分析网页。也是学爬虫必需要学会的工具,一个优秀的虫爸/虫妈应该花更多的时间在网页分析和debug上。浏览器
使用很是简单,打开任一浏览器(笔者的是google chrome),按F12或鼠标右键检查。服务器
为何选择requests,由于它能彻底胜任python自带的urllib模块,简化了没必要要的功能的同时让使用更加简单。cookie
很是简单,打开cmd,直接pip安装工具
pip install requests
或pycharm中搜索requests安装post
首先呈上官方文档,有中文版,欢迎来啃。
下面主要介绍两种方法:get和post学习
r = requests.get(url,**args)#返回一个Response对象,咱们能够从这个对象中获取全部咱们想要的信息
r = requests.post(url,**args)#也是返回Response对象
get和post方法中有许多参数可使用,部分参数后面会详解。
payload = {'key1': 'value1', 'key2': 'value2'} r = requests.get("http://httpbin.org/get", params=payload) #至关于目标网址变成了http://httpbin.org/get?key2=value2&key1=value1
从这个对象中获取全部咱们想要的信息很是简单,毕竟爬虫要的数据主要就三种,html源码,图片二进制数据,json数据,Response对象一次性知足你三个愿望。
r.encoding = 'ISO-8859-1' #指定r.text返回的数据类型,写在r.text以前。 r.text #默认以unicode形式返回网页内容,也就是网页源码的字符串。 r.content #以二进制形式返回网页内容,下载图片时专用。 r.json() #把网页中的json数据转成字典并将其返回。 #还有一些不多用到的方法。 r.headers #返回服务器端的headers,字典。 r.status_code #返回链接状态,200正常。
requests 学完后就能够处处试试了,若是红了(抛出异常),那大概是服务器拒绝你了,毕竟假装什么的还没提到,服务器知道你是虫子就把你踢掉了。
import requests r = requets.get('http://cn.python-requests.org/zh_CN/latest/') with open('test.txt','w',encoding = 'utf-8') as file:#编码要对应 file.write(r.text) #而后打开看看吧,是否是和F12看到的源码同样,只不过是把分支全展开了而已。
小提示:并非全部网站的F12源码和爬取源码是一致的,网站有动态的,也有静态的;有防爬虫的,也有敞开大门任意爬的。关于对策以后会讲到。
第一次写文章,挺累的,我须要作(wan)几(ji)道(pan)数(you)学(xi)题放松一下本身才行。