我正在尝试使用Scrapy构建一个webcrawler spider,并为我希望爬虫程序使用regex获取的链接设置了一个规则:
rules = (Rule(SgmlLinkExtractor(allow='http\:\/\/www\.cartelera\.com\.uy\/apeliculafunciones\.aspx\?[^"]*1&29'), 'parse_loly', follow=True, ),)
我检查了正则表达式,它工作了,它与我希望蜘蛛爬行的链接相匹配,但当我运行程序时,蜘蛛没有找到任何项目,经过一点检查,我发现,虽然正则表达式与项目正确匹配,但当蜘蛛去爬网网页时,它使用的网址与它应该是不同的。在
例如,spider应该匹配并抓取url,比如
^{pr2}$但是网址的抓取方式
http://www.cartelera.com.uy/apeliculafunciones.aspx?-1=&29=&7242=&CINE=&OBRA=
http://www.cartelera.com.uy/apeliculafunciones.aspx?-1=&29=&10704=&CINE=&OBRA=
http://www.cartelera.com.uy/apeliculafunciones.aspx?-1=&29=&10697=&CINE=&OBRA=
这些URL会导致错误页面,因此,很明显,找不到任何项。在
没有错误消息 为什么会发生这种情况?我如何避免?在
在下面粘贴我的类代码
class MySpider(CrawlSpider):
name = 'cartelera'
allowed_domains = ["www.cartelera.com.uy"]
start_urls = ["http://www2.cartelera.com.uy/apeliculafunciones.aspx?,,PELICULAS,OBRA,0,26"]
rules = (Rule(SgmlLinkExtractor(allow='http\:\/\/www\.cartelera\.com\.uy\/apeliculafunciones\.aspx\?[^"]*1&29'), 'parse_loly', follow=True, ),)
##simple debugging method to output and check the crawled urls
def parse_loly(self, response):
print '%s' % response.url
return
这些URL不是标准的,您可以通过告诉sgml extractor不要规范化它们来克服这一点,例如:
下面是你如何使用“废壳”来找到答案:
^{pr2}$相关问题 更多 >
编程相关推荐