本期“栏目”的四大看点:
1 如何爬取
how to Obtain
我们老说爬虫,那么具体到底怎么爬?爬什么?
首先,“爬虫四步”:获取数据(包含请求和响应两个动作)、解析数据、提取数据、存储数据。
最简单的请求方式是:requests.get()
代码:
import requests
url = ''
response = requests.get(url)
此外,我们还需要一个工具,叫做Network。在它的帮助下,我们能看到所有的请求,这样我们才能完成爬虫四步
Network能够记录浏览器的所有请求。我们最常用的是:ALL(查看全部)/XHR(仅查看XHR)/Doc(Document,第0个请求一般在这里),有时候也会看看:Img(仅查看图片)/Media(仅查看媒体文件)/Other(其他)。最后,JS和CSS,则是前端代码,负责发起请求和页面实现;Font是文字的字体。
在爬虫里, XHR和Doc是我们最常用的。我们能在Doc里找到一个网页的源代码,而在网页源代码里找不到的信息,通常都能在XHR里找到。有它的存在,人们不必刷新/跳转网页,即可加载新的内容。
2 解析与提取
Parsing and Reading
当数据藏匿于网页源代码,在“爬虫四步”链里,最重要的库叫BeautifulSoup,它能提供一套完整的数据解析、数据提取解决方案。(关于BeautifulSoup的安装和使用,在前期文章中介绍过哦~)
XHR所传输的数据,最重要的一种是用json格式写成的,和html一样,这种数据能够有组织地存储大量内容。json的数据类型是“文本”,我们称为字符串。我们能很容易将json格式的数据转化为列表/字典,反之也可以。
3 如何解析json数据
How to Parse JSON Data
通过Response类支持使用json()方法来将数据转为list/dic,比如:
import requests
r=requests.get(‘http://……’)
print(r.json())
请求本身很有意思。requests.get()里面其实只有一个参数,即url。但其实,这个请求可以有多个参数。
params,可以让我们带着参数来请求数据:我想要第几页?我想要搜索的关键词?我想要多少个数据?
headers,请求头。它告诉服务器,我的设备/浏览器是什么?我从哪个页面而来?
再往后,除了get请求之外,还存在着另一种请求方式——post。post区别于get的是:get是明文显示参数,post是非明文显示参数。学会post,又有两个参数可用
(1)在post请求里,我们使用data来传递参数,其用法和params非常相像。
(2)cookies,中文名是“小饼干”。但它却和“小饼干”并无关联。它的作用是让服务器“记住你”,比如一般当你登录一个网站,你都会在登录页面看到一个可勾选的选项“记住我”。如果你点了勾选,服务器就会生成一个cookies和你的账号绑定。接着,它把这个cookies告诉你的浏览器,让浏览器把cookies存储到你的本地电脑。当下一次,浏览器带着cookies访问博客,服务器会知道你是何人,你不需要再重复输入账号密码,就能直接访问。
到这,考虑极端情况。代码可能会是这样:
4 如何爬取豆瓣电影数据?
Get Douban Movie Data
创建爬虫文件,获取url地址 地址为:url="https://movie.douban.com/top250" 使用request获取第一页的请求信息:
获取多页的请求信息
下载电影图片地址到本地
爬取豆瓣热门美剧存储到mongodb中 将json数据转换为字典,然后根据键subjects循环取出里面的值,取出我们想要的数据
获取多页数据
注释:内容来自公众号数据皮皮侠
python培训:http://www.baizhiedu.com/python2019