0

我遇到了需要爬行和刮擦的 Scrapy。但根据应用要求,我决定不采用 Monolithic 方法。一切都应该以服务为基础。所以我决定设计两个服务。

  1. 获取所有 url 和 html。上传到s3。
  2. 从 html 中抓取项目

为什么?很简单,今天我决定把它刮掉10个,明天我要刮20个(申请要求)。在这种情况下,我不想再次抓取 url 和 html,因为 html 将是相同的(我只抓取博客站点,其中只添加评论并且每个 url 的内容保持不变)。

第一项服务将基于 Scrapy。如果我们可以提供 html 而不是 start url,或者我们必须使用 BeatifulSoap 或其他一些抓取库,我正在寻找是否可以使用相同的抓取。

4

1 回答 1

1

Scrapy 选择器(允许从 HTML/XML 中提取数据)现在被打包为一个名为parsel.

如果您可以提供从 S3 到 a 的 Unicode HTML 字符串parsel.Selector,您可以进行与“常规”实时 scrapy 项目中相同的数据提取。

文档中的示例:

>>> from parsel import Selector
>>> sel = Selector(text=u"""<html>
        <body>
            <h1>Hello, Parsel!</h1>
            <ul>
                <li><a href="http://example.com">Link 1</a></li>
                <li><a href="http://scrapy.org">Link 2</a></li>
            </ul
        </body>
        </html>""")
>>>
>>> sel.css('h1::text').extract_first()
u'Hello, Parsel!'
>>>
>>> sel.css('h1::text').re('\w+')
[u'Hello', u'Parsel']
>>>
>>> for e in sel.css('ul > li'):
        print(e.xpath('.//a/@href').extract_first())
http://example.com
http://scrapy.org
于 2016-07-22T10:26:45.957 回答