python scrapy爬取下一层url

    科技2023-10-20  97

    话不多说,先上scrapy代码,这里没有用到管道进行写入操作,就简单地打印一下。

    如果需要写入到文件,pg函数里面的name和downlink记得还要再遍历一下,因为下面的是列表格式,遍历后就是文本格式了。

    import scrapy class File01Spider(scrapy.Spider): name = 'file01' start_urls = ['https://www.ygdy8.net/html/gndy/dyzz/index.html'] page = 2 def parse(self, response): urls = response.xpath('//table[@class="tbspan"]//a/@href').extract() for u in urls: u = 'https://www.ygdy8.net' + u yield scrapy.Request(url=u,callback=self.pg) if self.page <= 221: start_u = f'https://www.ygdy8.net/html/gndy/dyzz/list_23_{self.page}.html' self.page += 1 yield scrapy.Request(url=start_u, callback=self.parse) def pg(self, response): name = response.xpath('//div[@class="title_all"]/h1/font/text()').extract() downlink = response.xpath('//table/tbody//a/@href').extract() print(name) print(downlink)

    代码看起来很简单,其实主要是通过2个循环和1个函数来实现对下一层url的解析。

    第一个循环是parse里面的 for u in urls。这里的主要作用是将解析到的页面网址作为参数传递的函数pg,利用函数pg对传递的url进行下一层的解析,并输出相应的url点进去后的名称和下载链接。

    第二个循环实际上是parse里面的if 语句,这里是递归调用,因为scrapy.Request里面callback参数写的是自身,主要作用是实现了翻页功能~

    Processed: 0.015, SQL: 8