Scrapy sqmllinkextractor规则更改URL

2024-04-23 08:09:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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

Tags: 程序comhttpparse链接wwwspider蜘蛛
1条回答
网友
1楼 · 发布于 2024-04-23 08:09:51

这些URL不是标准的,您可以通过告诉sgml extractor不要规范化它们来克服这一点,例如:

SgmlLinkExtractor(allow='http...', canonicalize=False)

下面是你如何使用“废壳”来找到答案:

^{pr2}$

相关问题 更多 >