返回基础:Scrapy
问题描述:
新的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分钟提取这些数据点)。如果任何人有任何指示的例子,他们会得到超级布朗尼点:)
答
语法错误是由您使用双引号的方式引起的。混合单引号和双引号:
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()
如果你是在Linux上,你可以设置一个cron脚本来运行这条线“0,30 * * * *蟒每30分钟你_script.py” – Back2Basics