2016-07-22 40 views
0

我遇到了需要抓取和抓取Scrapy的Scrapy。但根據應用需求,我決定不採用單片方式。一切都應該基於服務。所以我決定設計兩項服務。Scrapy:從HTML中刪除項目而不是從URL

  1. 獲取所有網址和html。在s3上傳。
  2. html的廢料項目

爲什麼?很簡單,今天我決定取消10件物品,明天我要取消20件(應用要求)。在這種情況下,我不想再次抓取url和html,因爲html會相同(我只抓取只添加評論的博客站點,而且每個url的內容保持不變)。

第一項服務將基於Scrapy。我一直在尋找是否可以使用相同的方法來進行搜索,如果我們可以提供html而不是start url,或者我們必須使用BeatifulSoap或其他一些拼寫庫。

+0

如果您的HTML源存儲在S3上,你仍然可以使用scrapy下載它們和異步抓取的:) – Granitosaurus

回答

1

Scrapy選擇器(允許從HTML/XML提取數據)現在打包爲一個名爲parsel的獨立項目。

如果您可以從S3提供Unicode HTML字符串到parsel.Selector,則可以執行與「常規」實況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 
+0

看着它。但它仍然是另一個像BeatifulSoap等的圖書館。 – SangamAngre