Scrapy LinkExtractor错误的链接刮擦

时间:2016-02-16 15:19:38

标签: regex hyperlink scrapy rules

在LinkExtractor中使用Scrapy规则时,在与我的正则表达式匹配的页面中找到的链接不太正确。我可能错过了一些明显的东西,但我没有看到它......

从与我的正则表达式匹配的页面中拉出的所有链接都是正确的,但是在链接的末尾有一个“=”符号。我做错了什么?

网址抓取:

require('babel-register'); require('./server');

我想抓取的链接示​​例:

http://rotoguru1.com/cgi-bin/hstats.cgi?pos=0&sort=1&game=k&colA=0&daypt=0&xavg=3&show=1&fltr=00

我的规则/链接提取器/正则表达式:

<a href="playrh.cgi?3986">Durant, Kevin</a>

已删除的网址(取自parse_player响应对象):

rules = [ # <a href="playrh.cgi?3986">Durant, Kevin</a>
    Rule(LinkExtractor(r'playrh\.cgi\?[0-9]{4}$'),
         callback='parse_player',
         follow=False
    )
]
  

注意额外的'='附加到URL的末尾!

谢谢!

当然,这是我的日志...

据我所知,没有重定向发生,但是那个讨厌的'='正在以某种方式结束或请求URL ......

我现在要探索'链接处理'来解决这个问题,但是我想深入了解它。

谢谢!

'http://rotoguru1.com/cgi-bin/playrh.cgi?4496='

1 个答案:

答案 0 :(得分:0)

以下代码段通过修剪链接

中的流氓'='符号来实现
...

rules = [
    Rule(LinkExtractor(r'playrh\.cgi\?[0-9]{4}'),
         process_links='process_links',
         callback='parse_player',
         follow=False
    )
]

...

def process_links(self, links):
    for link in links:
        link.url = link.url.replace('=','')
    return links

...