我遇到Scrapy需要爬行和刮擦两者。但根据应用要求,我决定不采用Monolithic方法。一切都应该以服务为基础。所以我决定设计两种服务。
为什么呢?很简单,今天我决定废弃10件物品,明天我要废20件(申请要求)。在这种情况下,我不想再次抓取url和html,因为html将是相同的(我只抓取博客网站,其中只添加评论,内容保持相同的每个网址)。
第一项服务将基于Scrapy。如果我们可以提供html而不是start url,或者我们必须使用BeatifulSoap或其他一些抓取库,我正在寻找是否可以使用相同的抓取。
答案 0 :(得分:1)
Scrapy选择器(允许从HTML / XML中提取数据)现在打包为一个名为parsel
的独立项目。
如果您可以提供从S3到parsel.Selector
的Unicode HTML字符串,则可以执行与常规"相同的数据提取。现场scrapy项目。
来自the docs的示例:
>>> 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