2015-11-13 64 views
3

新的scrapy,我绝对需要指针。我已经通过一些例子,我没有得到一些基本知识。我跑scrapy 1.0.3返回基础:Scrapy

蜘蛛:

from scrapy.spider import BaseSpider 
from scrapy.selector import HtmlXPathSelector 
from matrix_scrape.items import MatrixScrapeItem 


class MySpider(BaseSpider): 
    name = "matrix" 
    allowed_domains = ["https://www.kickstarter.com/projects/2061039712/matrix-the-internet-of-things-for-everyonetm"] 
    start_urls = ["https://www.kickstarter.com/projects/2061039712/matrix-the-internet-of-things-for-everyonetm"] 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 

     item = MatrixScrapeItem() 
     item['backers'] = hxs.select("//*[@id="backers_count"]/data").extract() 
     item['totalPledged'] = hxs.select("//*[@id="pledged"]/data").extract() 
     print backers, totalPledged 

项目:

import scrapy 


class MatrixScrapeItem(scrapy.Item): 
    # define the fields for your item here like: 
    # name = scrapy.Field() 

    backers = scrapy.Field() 
    totalPledged = scrapy.Field() 

    pass 

,我发现了错误:

File "/home/will/Desktop/repos/scrapy/matrix_scrape/matrix_scrape/spiders/test.py", line 15 
    item['backers'] = hxs.select("//*[@id="backers_count"]/data").extract() 

Myquestions是:为什么ISN” t选择和提取工作正常吗?我确实看到人们使用Selector而不是HtmlXPathSelector。

此外,我试图将这保存到一个CSV文件,并基于时间自动化(每隔30分钟提取这些数据点)。如果任何人有任何指示的例子,他们会得到超级布朗尼点:)

+0

如果你是在Linux上,你可以设置一个cron脚本来运行这条线“0,30 * * * *蟒每30分钟你_script.py” – Back2Basics

回答

2

语法错误是由您使用双引号的方式引起的。混合单引号和双引号:

item['backers'] = hxs.select('//*[@id="backers_count"]/data').extract() 
item['totalPledged'] = hxs.select('//*[@id="pledged"]/data').extract() 

作为一个侧面说明,您可以使用快捷response.xpath()代替实例HtmlXPathSelector

def parse(self, response): 
    item = MatrixScrapeItem() 
    item['backers'] = response.xpath('//*[@id="backers_count"]/data').extract() 
    item['totalPledged'] = response.xpath('//*[@id="pledged"]/data').extract() 
    print backers, totalPledged 

而且你可能已经打算让data元素的text()

//*[@id="backers_count"]/data/text() 
//*[@id="pledged"]/data/text()