我一直在学习如何使用scrapy,尽管我在python中的经验很少。我开始学习如何使用BaseSpider进行刮擦。现在我正在尝试抓取网站,但我遇到了一个让我困扰的问题。以下是http://doc.scrapy.org/topics/spiders.html官方网站的示例代码。
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
class MySpider(CrawlSpider):
name = 'example.com'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com']
rules = (
# Extract links matching 'category.php' (but not matching 'subsection.php')
# and follow links from them (since no callback means follow=True by default).
Rule(SgmlLinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),
# Extract links matching 'item.php' and parse them with the spider's method parse_item
Rule(SgmlLinkExtractor(allow=('item\.php', )), callback='parse_item'),)
def parse_item(self, response):
print "WHY WONT YOU WORK!!!!!!!!"
self.log('Hi, this is an item page! %s' % response.url)
hxs = HtmlXPathSelector(response)
item = TestItem()
item['id'] = hxs.select('//td[@id="item_id"]/text()').re(r'ID: (\d+)')
item['name'] = hxs.select('//td[@id="item_name"]/text()').extract()
item['description'] = hxs.select('//td[@id="item_description"]/text()').extract()
return item
我做的唯一改变是声明:
print "WHY WONT YOU WORK!!!!!!!!"
但是因为我没有在运行时看到这个print语句,所以我担心没有达到这个功能。这是我直接从官方scrapy网站上获取的代码。我做错了什么或误解了什么?
答案 0 :(得分:1)
start_urls = ['http://www.example.com']
example.com
没有任何类别或项目的链接。这只是一个抓取网站网址的示例。
这是文档中的一个非工作示例。
答案 1 :(得分:0)
您可以尝试制作一个您知道可行的蜘蛛,并查看print语句是否可以执行任何操作。我想我记得很久以前尝试做同样的事情,即使代码被执行,它们也不会出现。