马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 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][1:-1])
文字 = 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
|