龙空技术网

超简单!大神教你两个类简单的代码智能爬取贴吧百万图片(附源码

Python乐园 764

前言:

现在你们对“css刮刮卡”都比较关心,大家都想要分析一些“css刮刮卡”的相关资讯。那么小编也在网摘上搜集了一些有关“css刮刮卡””的相关知识,希望姐妹们能喜欢,兄弟们一起来学习一下吧!

。。。

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

Scrap,是碎片的意思,这个Python的爬虫框架叫Scrapy。

如果你是一位在校大学生,对大数据感兴趣,也知道使用的企业越来越多,市场需求更是日新月异,但苦于自己基础不够,心有余而力不足;也看过不少大数据方面的书籍、博客、视频等,但感觉进步不大;如果你是一位在职人员,但目前主要使用传统技术,虽然对大数据很有兴趣,也深知其对未来的影响,但因时间不够,虽有一定的基础,常常也是打两天鱼、晒三天网,进展不是很理想。

如果你有上述疑惑或遇到相似问题,《自己动手做大数据系统》正好比较适合你。《自己动手做大数据系统》从OpenStack云平台搭建、软件部署、需求开发实现到结果展示,以纵向角度讲解了生产性大数据项目上线的整个流程;以完成一个实际项目需求贯穿各章节,讲述了Hadoop生态圈中互联网爬虫技术、Sqoop、Hive、HBase组件协同工作流程,并展示了Spark计算框架、R制图软件和SparkRHive组件的使用方法。《自己动手做大数据系统》的一大特色是提供了实际操作环境,用户可以在线登录云平台来动手操作书中的数据和代码。

。。。

当你准备启动一个项目时,可以从这个教程开始

折叠选择网站

选择一个网站

如果你需要从某个网站提取一些信息,但是网站不提供API或者其他可编程的访问机制,那么小刮刮可以帮助你(提取信息)

让我们看下Mininova网站,需要提取的网址,名称,描述和torrent文件的大小、添加日期

下面这个列表是所有今天新增的torrents文件的页面:参考扩展阅读1

备注:torrent是洪流的意思,这里指bit torrent,比特洪流,就是我们常说的BT文件

折叠定义数据

定义你要抓取的数据

第一件事情就是定义你要抓取的数据,在小刮刮这个是通过定义Scrapy Items来实现的(本例是BT文件)

这就是要定义的Item

折叠撰写蜘蛛

撰写一个蜘蛛来抓取数据

下一步是写一个指定起始网址的蜘蛛(参考扩展阅读1),包含follow链接规则和数据提取规则

如果你看一眼页面内容,就会发现所有的torrent网址都是类似:参考扩展阅读2的样子,其中Number是一个整数,我们将用正则表达式,例如/tor/\d+.来提取规则

我们将使用Xpath,从页面的HTML Source里面选取要要抽取的数据,选取众多数据页面中的一个,例如参考阅读3

根据页面HTML 源码,建立XPath,选取:torrent name, description , size,这些数据

通过带可以看到

<h1>Home[2009][Eng]XviD-ovd</h1>

name属性包含在H1 标签内,使用 XPath expression提取:

//h1/text()

description在id="description"的div中

<h2>Description:</h2> <div id="description"> "HOME" - a documentary film by Yann Arthus-Bertrand <br/> <br/> *** <br/> <br/> "We are living in exceptional times. Scientists tell us that we have 10 years to change the way we live, avert the depletion of natural resources and the catastrophic evolution of the Earth's climate. ...

XPath提取

//div[@id='description']

size属性在第二个<p>tag,id=specifications的div内

<div id="specifications"> <p> <strong>Category:</strong> <a href="/cat/4">Movies</a> &gt; <a href="/sub/35">Documentary</a> </p> <p> <strong>Total size:</strong> 699.79&nbsp;megabyte</p>

XPath expression提取

//div[@id='specifications']/p[2]/text()[2]

如果要了解更多的XPath 参考这里 XPath reference.

蜘蛛代码如下:

因为很简单的原因,我们有意把重要的数据定义放在了上面(torrent数据定义),

折叠运行蜘蛛

运行蜘蛛来抓取数据

最后,我们运行蜘蛛来爬取这个网站,输出为json格式scraped_data.json

scrapy crawl 参考阅读4 -o scraped_data.json -t json

这个使用了feed exports,来生成json格式,当然,你可以很简单的更改输出格式为csv,xml,或者存储在后端(ftp或者Amazon S3)

你也可以写一段item pipeline,把数据直接写入数据库,很简单

折叠Review数据

Review一下抓取的数据

查看一下数据:scraped_data.json,内容大致如下

[{"url": "参考阅读2", "name": ["Home[2009][Eng]XviD-ovd"], "description": ["HOME - a documentary film by ..."], "size": ["699.69 megabyte"]}, # ... other items ... ]

关注一下数据,你会发现,所有字段都是lists(除了url是直接赋值),这是因为selectors返回的就是lists格式,如果你想存储单独数据或者在数据上增加一些解释或者清洗,可以使用Item Loaders

折叠更多

你也看到了如何使用小刮刮从一个网站提取和存储数据,但,这只是表象,实际上,小刮刮提供了许多强大的特性,让它更容易和高效的抓取:

1>内建 selecting and extracting,支持从HTML,XML提取数据

2>内建Item Loaders,支持数据清洗和过滤消毒,使用预定义的一个过滤器集合,可以在所有蜘蛛间公用

3>内建多格式generating feed exports支持(JSON, CSV, XML),可以在后端存储为多种方式(FTP, S3, local filesystem)

4>针对抓取对象,具有自动图像(或者任何其他媒体)下载automatically downloading images的管道线

5>支持扩展抓取extending Scrap,使用signals来自定义插入函数或者定义好的API(middlewares, extensions, and pipelines)

6>大范围的内建中间件和扩展,基于但不限于cookies and session handling

HTTP compression

HTTP authentication

HTTP cache

user-agent spoofing

robots.txt

crawl depth restriction

and more

7>强壮的编码支持和自动识别机制,可以处理多种国外的、非标准的、不完整的编码声明等等

8>可扩展的统计采集stats collection,针对数十个采集蜘蛛,在监控蜘蛛性能和识别断线断路?方面很有用处

9>一个可交互的XPaths脚本命令平台接口Interactive shell console,在调试撰写蜘蛛是上非常有用

10>一个系统服务级别的设计,可以在产品中非常容易的部署和运行你的蜘蛛

11>内建的Web service,可以监视和控制你的机器人

12>一个Telnet控制台Telnet console,可以钩入一个Python的控制台在你的抓取进程中,以便内视或者调试你的爬虫

13>支持基于Sitemap的网址发现的爬行抓取

14>具备缓存DNS和resolver(转发?冲突解决?)功能

。。。

人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。

Python爬虫入门学习。现在,Python可以做大数据的基础,人工智能的编程语言等,是一门比较热门的语言。我也写了很多其他的非常简单的详细教程,欢迎大家一起来交流。

。。。

上面是所有的功能代码。下面两行是调用执行。

记得执行的代码要左对齐。

执行时候,直接输入贴吧名字,比如:“李易峰”,然后输入 起始页 1,终止页 100,就可以开始执行了。

——————————————————————————————————————————————————

以上是全部代码,只是善于分享,不足之处请包涵!

爬虫基本的原理就是,获取源码,进而获取网页内容。一般来说,只要你给一个入口,通过分析,可以找到无限个其他相关的你需要的资源,进而进行爬取。

我也写了很多其他的非常简单的入门级的爬虫详细教程,关注后,点击我的头像,就可以查看到。

——————————————————————————————

没有把多线程写出来,多线程只需要几行代码,会的人可以加进去,还有界面化,都很简单,我以前的文章都写过。就当留给参考者一个练习的机会。但是就算这样,Python和电脑本身也会创建几个线程。当觉得爬取的图片足够的时候,可以暂停。

欢迎大家一起留言讨论和交流!

标签: #css刮刮卡 #python网页后端源码