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()