Scrapy框架的爬虫文件中遇到的问题?
本帖最后由 jjxx2005 于 2020-7-31 19:51 编辑import scrapy
from C005.items import C005Item
class JklSpider(scrapy.Spider):
name = 'bk'
# allowed_domains = ['www.123.com']
start_urls = ['https://www.qiushibaike.com/']
页码 = 2
def parse(self, response):
总页数 = int(response.xpath(r'//a/span/text()').extract()[-2])
文字 = response.xpath('//a[@class="recmd-content"]/text()').extract()
print(文字)
item = C005Item()
item['文字'] = 文字
yield item # 在一个函数中不能做两次返回,return和yield我都试过不行
if self.页码 <= 总页数:
url = f'https://www.qiushibaike.com/8hr/page/{self.页码}/'
self.页码 += 1
return scrapy.Request(url=url,callback=self.parse)
这个网页一共13页,第一页的url是https://www.qiushibaike.com/ 从第2页到第13页 就变成了https://www.qiushibaike.com/8hr/page/2/ https://www.qiushibaike.com/8hr/page/3/以此类推
我的起始url是https://www.qiushibaike.com/ 然后想让他解析之后,判断页码,当页码小于总页码时,就继续解析从第2页到第13页
这些都没问题
但是我需要做持久化存储。这时就要用 return item或yield item 可是一个 def 下面我无法使用两次 返回函数。。。
请问有没有什么好办法吗?
补充一下逻辑:
当url = https://www.qiushibaike.com 时,想直接yield item或return item
当页码 <= 总页数时,需要先return scrapy.Request(url=url,callback=self.parse)然后再 yield item或 return item 提示:第一页的 URL 也可以是 https://www.qiushibaike.com/8hr/page/1/ return scrapy.Request(url=url,callback=self.parse) 是要干啥?你的函数到底要返回什么? 永恒的蓝色梦想 发表于 2020-7-31 19:50
提示:第一页的 URL 也可以是 https://www.qiushibaike.com/8hr/page/1/
明白了 我试了好几个类似网站都是这样的情况 谢谢版主
页:
[1]