0

我需要在本地抓取和存储以供将来分析有限网站列表的内容。我基本上想在所有页面中啜饮并按照所有内部链接获取整个公开网站。

是否有现有的免费图书馆可以让我到达那里?我见过奇尔卡特,但它是收费的。我只是在这里寻找基线功能。想法?建议?


完全重复:有人知道我可以使用的基于 python 的网络爬虫吗?

4

2 回答 2

7

使用Scrapy

它是一个基于twisted的网络爬虫框架。仍在大力开发中,但它已经可以工作了。有很多好东西:

  • 内置支持解析 HTML、XML、CSV 和 Javascript
  • 用于使用图像(或任何其他媒体)抓取项目并下载图像文件的媒体管道
  • 支持通过使用中间件、扩展和管道插入您自己的功能来扩展 Scrapy
  • 广泛的内置中间件和扩展,用于处理压缩、缓存、cookie、身份验证、用户代理欺骗、robots.txt 处理、统计、抓取深度限制等
  • 交互式爬虫控制台,对开发和调试非常有用
  • 用于监视和控制机器人的 Web 管理控制台
  • 用于对 Scrapy 进程进行低级访问的 Telnet 控制台

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

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]
于 2009-01-07T18:03:35.447 回答
0

你真的需要图书馆吗?我强烈推荐Heritrix作为一个伟大的通用爬虫,它将保留整个网页(与只存储部分文本的更常见的爬虫相反)。边缘有点粗糙,但效果很好。

也就是说,你可以试试 HarvestMan http://www.harvestmanontheweb.com/

于 2009-01-07T17:56:36.240 回答