当前位置:  开发笔记 > 编程语言 > 正文

有人知道我可以使用基于Python的优秀网络爬虫吗?

如何解决《有人知道我可以使用基于Python的优秀网络爬虫吗?》经验,为你挑选了3个好方法。

我很想写自己的,但我现在没有足够的时间.我已经看过维基百科的开源爬虫列表,但我更喜欢用Python编写的东西.我意识到我可能只是使用维基百科页面上的一个工具并将其包装在Python中.我可能最终会这样做 - 如果有人对这些工具有任何建议,我愿意听到他们的意见.我通过它的网络界面使用了Heritrix,我发现它非常麻烦.我肯定不会为即将推出的项目使用浏览器API.

提前致谢.另外,这是我的第一个问题!



1> RexE..:

机械化是我的最爱; 出色的高级浏览功能(超简单的表单填写和提交).

Twill是一种基于Mechanize构建的简单脚本语言

BeautifulSoup + urllib2也很好用.

Scrapy看起来像是一个非常有前途的项目; 这是新的.


这些库可用于爬网,但它们本身不是爬虫
将urrlib2添加到Beautiful Soup,您就拥有了很好的工具组合.

2> nosklo..:

使用Scrapy.

它是一个基于扭曲的Web爬虫框架.仍处于重大发展阶段,但已经有效.有很多好吃的东西:

内置支持解析HTML,XML,CSV和Javascript

用于使用图像(或任何其他媒体)抓取项目并同时下载图像文件的媒体管道

通过使用中间件,扩展和管道插入您自己的功能,支持扩展Scrapy

广泛的内置中间件和扩展,用于处理压缩,缓存,cookie,身份验证,用户代理欺骗,robots.txt处理,统计信息,爬网深度限制等

交互式刮擦shell控制台,对开发和调试非常有用

用于监视和控制机器人的Web管理控制台

Telnet控制台,用于对Scrapy进程进行低级访问

通过在返回的HTML上使用XPath选择器提取有关今天在mininova torrent网站中添加的所有torrent文件的信息的示例代码:

class Torrent(ScrapedItem):
    pass

class MininovaSpider(CrawlSpider):
    domain_name = 'mininova.org'
    start_urls = ['http://www.mininova.org/today']
    rules = [Rule(RegexLinkExtractor(allow=['/tor/\d+']), 'parse_torrent')]

    def parse_torrent(self, response):
        x = HtmlXPathSelector(response)
        torrent = Torrent()

        torrent.url = response.url
        torrent.name = x.x("//h1/text()").extract()
        torrent.description = x.x("//div[@id='description']").extract()
        torrent.size = x.x("//div[@id='info-left']/p[2]/text()[2]").extract()
        return [torrent]



3> CMS..:

检查HarvestMan,一个用Python编写的多线程Web爬虫,还可以查看spider.py模块.

而在这里,你可以找到的代码示例构建一个简单的网络爬虫.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有