在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='
答案 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
...