- A+
创建爬虫
网络链接
网络浏览器是一个非常有用的应用,它创建信息的数据包,发送它们,然后把你获取的数据解释成漂亮的图像、声音、视频和文字。但是,网络浏览器就是代码,而代码是可以分解的,可以分解成许多基本组件,可重写、重用,以及做成我们想要的任何东西。网络浏览器可以让服务器发送一些数据,到那些对接无线(或有线)网络接口的应用上, 但是许多语言也都有实现这些功能的库文件。关于浏览器的相关介绍,可以参考维基关于浏览器的官方介绍。
1 |
pip install beautifulsoup4 |
如果没有报错可以验证一下是否安装成功。验证的方式有很多。这里我举例两种最常用的验证方式。
第一种验证方式:终端直接查看包是否存在。
1 |
pip freeze | grep beautifulsoup4 |
这里的安装是全局安装,如果在实际开发中不同的项目可能会有不同的环境或者版本要求,甚至会产生冲突,现在就就需要的能够支持多种的环境的需求,可以用虚拟环境保存库文件。安装一个Python
虚拟环境来分而治之。具体的使用方法这里不做过多阐述,后续会有对应的更新,你可以关注我就可以收到更新提示。
运行BeautifulSoup
结合之前抓取百度首页的代码,现在针对某网站的某文件进行抓取。如下:
1 |
html = urlopen("http://www.pythonscraping.com/pages/page1.html") |
这里面会出现两个问题,服务器不存在或者这个页面不存在。也就是要么404
,要么500
。
最后我们的判断是不是看起来代码特别的累赘,我们简单整理一下后,代码如下:
复杂的HTML解析
思考后确定获取目标
假如我们确定一个我们需要采集的目标信息,可能是一组统计数据、或者一个 title等,但是此时这个目标可能藏的比较深,可能在第20层的标签里面,你可能会用下面的方式去抓取:
bsObj.findAll("table")[4].findAll("tr")[2].find("td").findAll("div")[1].find("a") |
同时还有一个问题,加入网站发生细微的变化。我们的代码不仅影响美观还回影响整个爬虫网络。这样的情况我们应该怎么做呢?
1 |
<span class="green"></span> |
或者这样的:
1 |
<span class="red"></span> |
爬虫可以根据class
的属性值去区分不同的标签。例如:我们可以只抓取红色的字。
下面我们以这个网站为例来创建一个网络爬虫。
通过上图可以知道红色的为对话正文部分,绿色为姓名的信息。现在可以创建一个简单的
下面我们以这个网站为例来创建一个网络爬虫。
通过上图可以知道红色的为对话正文部分,绿色为姓名的信息。现在可以创建一个简单的BeautifulSoup对象。
第一类,处理子标签和其他后代标签。
子标签就是一个父标签的下一级,而后代标签是指一个父标签下面所有级别的标签。所有的子标签都是后代标签,但不是所有的后代标签都是子标签。例如:
输出的结果是打印产品列表里的所有行的产品,第一行表格标题除外。
第三类,父标签处理。
抓取网页的时候我们抓取父标签的情况比较少,但是不排除有这样的情况存在。例如,我们要观察网页的
正则表达式
正则表达式个人认为比较简单,就跟学习英语一样,只要不断的去用就了解了。贴上原图可查阅即可。关于正则的相关基础知识可以看看我推荐的网站了解一下,或者可以关注我,后续专门写一个正则表达式入门的文章。
正则表达式和BeautifulSoup
结合正则表达式,来实现一下具体的例子,可能更容易理解一些。我们获取刚刚网站的所有图片,首先打开源码分析一下页面。
主要内容:
单个域名和网站的采集;
互联网采集和用Scrapy采集初步介绍。
遍历整个网络
采集整个网站,那是非常耗费内存资源的过程,尤其是处理大型网站时,最合适的工具就是用一个数据库来储存采集的资源。
遍历整个网络的数据好处:可以生产网站地图,收集网站数据等。但是一般不会消耗大量的内存资源去做采集,本节的意义不大。
关于Scrapy
的内容我们后续逐一介绍,大家可以点击关注,及时收到后续更新。
未完待续!!!