Python 刮板找不到页面
我有一个如下所示的spider,但它似乎没有到达函数Python 刮板找不到页面,python,scrapy,Python,Scrapy,我有一个如下所示的spider,但它似乎没有到达函数parse。如果我遗漏了什么,能不能有人快速看一下让我知道。我是否正确实现了SgmlLinkExtractor 蜘蛛应该从左侧边栏中挑出所有链接,从中创建一个请求,然后解析下一页的facebook链接。它还应该对SgmlLinkExtractor中指定的其他页面执行此操作。此时,爬行器正在运行,但没有解析任何页面 class PrinzSpider(CrawlSpider): name = "prinz" allowed_dom
parse
。如果我遗漏了什么,能不能有人快速看一下让我知道。我是否正确实现了SgmlLinkExtractor
蜘蛛应该从左侧边栏中挑出所有链接,从中创建一个请求,然后解析下一页的facebook链接。它还应该对SgmlLinkExtractor中指定的其他页面执行此操作。此时,爬行器正在运行,但没有解析任何页面
class PrinzSpider(CrawlSpider):
name = "prinz"
allowed_domains = ["prinzwilly.de"]
start_urls = ["http://www.prinzwilly.de/"]
rules = (
Rule(
SgmlLinkExtractor(
allow=(r'veranstaltungen-(.*)', ),
),
callback='parse'
),
)
def parse(self, response):
hxs = HtmlXPathSelector(response)
startlinks = hxs.select("//ul[@id='mainNav2']/li/a")
print startlinks
for link in startlinks:
giglink = link.select('@href').extract()
item = GigItem()
item['gig_link'] = giglink
request = Request(item['gig_link'], callback='parse_gig_page')
item.meta['item'] = item
yield request
def parse_gig_page(self, response):
hxs = HtmlXPathSelector(response)
item = response.meta['item']
gig_content = hxs.select("//div[@class='n']/table/tbody").extract()
fb_link = re.findall(r'(?:www.facebook.com/)(.*)', gig_content)
print '********** FB LINK ********', fb_link
return item
编辑**
settings.py
BOT_NAME = 'gigscraper'
SPIDER_MODULES = ['gigscraper.spiders']
NEWSPIDER_MODULE = 'gigscraper.spiders'
ITEM_PIPLINES = ['gigscraper.pipelines.GigscraperPipeline']
from scrapy.item import Item, Field
class GigItem(Item):
gig_link = Field()
class GigscraperPipeline(object):
def process_item(self, item, spider):
print 'here I am in the pipeline'
return item
items.py
BOT_NAME = 'gigscraper'
SPIDER_MODULES = ['gigscraper.spiders']
NEWSPIDER_MODULE = 'gigscraper.spiders'
ITEM_PIPLINES = ['gigscraper.pipelines.GigscraperPipeline']
from scrapy.item import Item, Field
class GigItem(Item):
gig_link = Field()
class GigscraperPipeline(object):
def process_item(self, item, spider):
print 'here I am in the pipeline'
return item
pipelines.py
BOT_NAME = 'gigscraper'
SPIDER_MODULES = ['gigscraper.spiders']
NEWSPIDER_MODULE = 'gigscraper.spiders'
ITEM_PIPLINES = ['gigscraper.pipelines.GigscraperPipeline']
from scrapy.item import Item, Field
class GigItem(Item):
gig_link = Field()
class GigscraperPipeline(object):
def process_item(self, item, spider):
print 'here I am in the pipeline'
return item
两个问题:
返回一个列表,您缺少extract()
[0]
- 请求的回调不应是字符串,请使用
self.parse\u gig\u页面
希望能有所帮助。谢谢你的回复,但我还是一无所获。我没有收到打印的报表。。。没有什么。似乎找不到第一个url。@puffin这很奇怪,它适合我。这是一个小项目的一部分吗?如果是,则显示您的设置(编辑问题并粘贴到那里)。使用
CrawlSpider
时,应避免覆盖parse()
方法。看见将其重命名为parse_page()
或something@pault谢谢你,保罗。我已经试过了,但仍然在解析0页。@puffin,我把这些碎片文件放在Cloud9IDE上了。查看:查看scrapy_教程/gigsrapper
;它包含@alecxe建议,我将parse
重命名为parse\u页面
,以遵循良好实践。蜘蛛跑得很好,收集了39件物品。(在底部的终端中,cd gigsrapper/;scrapy crawl prinz
)