scrapy and xpath function 'matches' syntax

后端 未结 2 843
挽巷
挽巷 2021-01-06 17:20

I\'m running scrapy 0.20.2.

$ scrapy shell \"http://newyork.craigslist.org/ata/\"

I would like to make the list of all links to advertiseme

相关标签:
2条回答
  • 2021-01-06 17:48

    matches is an XPath 2.0 function, and scrapy only supports XPath 1.0 (which does not have any regular expression support built in). You'll have to extract all the links using a scrapy selector and then do the regex filtering at the Python level rather than within the XPath.

    0 讨论(0)
  • 2021-01-06 17:56

    For this special use case, there is an XPath 1.0-workaround using translate(...):

    //a[
      translate(substring-before(@href, '.html'), '0123456789', '') = ''
      and @href != '.html'
      and substring-after(@href, '.html') = '']
    

    The translate(...) call removes all digits from the name part before the .html extension. The second line check makes sure .html is excluded (nothing before the dot), the last makes sure .html actually is the file extension.

    0 讨论(0)
提交回复
热议问题