SgmlLinkExtractor没有提取链接

时间:2014-04-10 14:39:34

标签: python regex scrapy

我是Python和Scrapy的新手。我正在试图从主站点链接一个网站列表。

主站点的格式为http://www.example.com/something.aspx,我希望SgmlLinkExtractor提取的子站点/子站点的格式为http://www.example.com/something.aspx?ac=N123&dc=123,其中{{1}之后的值}和ac=更改不同的链接。因此,在正则表达式中,我将它们写为dc=

我尝试使用scrapy shell中的SgmlLinkExtractor。首先,

http://www\.example\.com/something\.aspx\?ac=[A-Za-z\d]+&dc=\d+

通过这种方式,我设法获得页面上的所有链接。

如果我使用

    >>>link = SgmlLinkExtractor()
    >>>link.extract_links(response)

我仍然可以获得以http://www.example.com/something.aspx开头的所有链接?但是,如果我尝试

    >>>link = SgmlLinkExtractor(allow=("http://www\.example\.com/something\.aspx\?"))
    >>>link.extract_links(response)

甚至

    >>>link = SgmlLinkExtractor(allow=("http://www\.example\.com/something\.aspx\?ac=[A-Za-z\d]+&dc=\d+"))
    >>>link.extract_links(response)

我一无所获。 >>>link = SgmlLinkExtractor(allow=("http://www\.example\.com/something\.aspx\?ac")) >>>link.extract_links(response) 就是我得到的。有什么想法解决这个问题吗?

修改

我再次尝试使用

>>>[]

这是有效但

    >>>link = SgmlLinkExtractor(allow=(r"ac"))
    >>>link.extract_links(response)

仍然无法正常工作。我认为问题可能是由于网址中的 >>>link = SgmlLinkExtractor(allow=(r"ac=[A-Za-z\d]+&dc=\d+")) >>>link.extract_links(response) ?造成的。当我为包含&allow的{​​{1}}指定参数时,是否需要任何转义字符或任何内容才能使链接提取器正常工作?基本上我需要包括?

虽然一种解决方法是使用&,但我希望我可以在&dc...参数中包含restrict_xpath?

0 个答案:

没有答案