Python 根据链接的长度刮取链接

Python 根据链接的长度刮取链接,python,python-3.x,scrapy,Python,Python 3.x,Scrapy,我想用这个网站的字母名称刮去所有页面的链接: 也就是说,链接如下: ['/pinpai/2-a.html','/pinpai/3-b.html'...] 为了在里面多刮一些东西 接下来,我激励自己学习xpath过滤。由于它们的长度似乎不到17个字符,并且我在文档上找到了一些长度过滤资源,因此我尝试在下面的scrapy scraper的spider中按长度过滤链接: import scrapy class NosetimeScraper(scrapy.Spider): name =

我想用这个网站的字母名称刮去所有页面的链接:

也就是说,链接如下:

['/pinpai/2-a.html','/pinpai/3-b.html'...]
为了在里面多刮一些东西

接下来,我激励自己学习xpath过滤。由于它们的长度似乎不到17个字符,并且我在文档上找到了一些长度过滤资源,因此我尝试在下面的scrapy scraper的spider中按长度过滤链接:

import scrapy

class NosetimeScraper(scrapy.Spider):
    name = "nosetime"
    start_urls = ['https://www.nosetime.com/pinpai/']

    def parse(self, response):
        # proceed to other pages of the listings
        for page_url in response.xpath('//a[contains(@href, "pinpai"), string-length(@href)<17]/@href').extract():
            print("page_url: ", page_url)
            page_url = response.urljoin(page_url)
            yield scrapy.Request(url=page_url, callback=self.parse)
import scrapy
类:Scraper(scrapy.Spider):
name=“nosetime”
起始URL=['https://www.nosetime.com/pinpai/']
def解析(自我,响应):
#转到列表的其他页面

对于response.xpath('//a[contains(@href,“pinpai”),字符串长度(@href)我认为xpath的正确sintax是

'//a[contains(@href, "pinpai") and string-length(@href)<17]/@href'

”//a[contains(@href,“pinpai”)和字符串长度(@href)在谓词中替换为“//a[contains(@href,“pinpai”)和字符串长度(@href)谢谢!该死,你可以在这些过滤器中使用regex?!
'//a[contains(@href, "pinpai") and string-length(@href)<17]/@href'
response.xpath('//a[contains(@href, "pinpai") and string-length(@href)<17]/@href').extract()