本文介绍了爬虫的环境搭建,一个简单的图片爬取例子,最后介绍两个常见的小错误,
AttributeError: 'NoneType’ object has no attribute 'find
“requests.exceptions.InvalidSchema: No connection adapters were found for…” 什么是爬虫?
这是一篇解释的比较容易理解的博文。 从零学习爬虫,逃不开安装环境。 完成安装环境,下一步就是安装常用的爬虫包了,这里提到主要是这两个包,request 和 BeautifulSoup (美味的汤)
这两个包是比较常见的,也比较好用。 import requestsfrom bs4 import BeautifulSoup12这两个包都可以在Pycharm中直接下载。 File–>Setings–>Project Interpreter
点击加号,搜索添加包
这也是添加引用包的方法,当然手动添加也可以,这里就不说了。 安装环境打好后就可以开始编程了。
博主之前没有学过py,所以介绍的部分可能比较基础。
废话少说,直接上代码。 import requestsfrom bs4 import BeautifulSoupimport osimport lxmlimport random url = "https://www.baidu.com/"r = requests.get(url)r.raise_for_status()bs = BeautifulSoup(r.text, 'lxml')image = bs.find("div", {"id": "lg"}).find("img")["src"]ir = requests.get("http:"+ image)if ir.status_code == 200: open('**.jpg', 'wb').write(ir.content)123456789101112131415161718本例实现的是从百度官网下载百度**。
主要用到了 request.get 函数和 BeautifulSoup.find 函数
具体实现参照了这篇回答 简单总结一下我的理解,URL是一种网络寻址的路径,用来定位资源,和网站网址类似。
r = requests.get(url)
get函数的具体结构可以参照这篇博文
get函数模仿主机去点击网址的方式,给网站发送请求,并接收回应,get的返回值是网站反馈的Request对象。
r.raise_for_status()是建议反馈的Request对象是否正常的工具,具体内容可以看这篇博文 bs = BeautifulSoup(r.text, 'lxml’)
image = bs.find(“div”, {“id”: “lg”}).find(“img”)[“src”]
这里讲BeautifulSoup实例化,因为是由get的返回值实例化的,调用find函数去返回的网页中找百度**
如果报错
AttributeError: 'NoneType’ object has no attribute 'find
请检查find是否能找到具体目标src。
可以这样理解,find先去找 div类中 id=lg 的位置,在去找其中img下的src,将src给到image。 ir = requests.get(“http:”+ image)
因为 image中存放的是 //www.baidu.com/img/bd **1.png
我们要去访问他就需要补全网站 http://www.baidu.com/img/bd **1.png。
ir = requests.get(“http:”+ image)
否则访问就会报错
“requests.exceptions.InvalidSchema: No connection adapters were found for…” open('**.jpg’, 'wb’).write(ir.content)
最后打开**.jpg存放图片。 到这基础爬取已经完成,下次将对具体的漫画网站进行爬取。
|