python - 使用 Scrapy-Python 抓取网站所有页面后如何执行任务
问题描述
在我的刮刀 刮掉网站主页的所有锚点后,我想执行一些任务。但是 print 语句是在处理所有页面的 parse_details 之前执行的。
任何帮助,将不胜感激。提前致谢
def parse_site(self,response):
next_links = response.css('a::attr(href)').getall()
for next_link in next_links:
yield response.follow(next_link,callback=self.parse_detail)
print("Task after complettion of all pages")
def parse_detail(self,response):
print("@@@@@@@@@@@@@@@@@GETTING HERE################")
all_content = response.xpath('//body').extract()
print("###############")
print(response.url)
解决方案
您可以将该方法添加close
到您的蜘蛛,该方法将在您的蜘蛛完成后由scrapy 调用。但是,您不能在该方法中产生更多项目。Scrapy 文档
def closed(self, reason):
# do something here.
pass
推荐阅读
- haskell - Haskell 中有任意大的数据结构吗?
- javascript - 使用按钮调用 API 并将结果返回给回调函数
- python - 使用 django bootstrap 组件时,Django plotly dash-application 返回完全空白页面
- reactjs - 在 Material UI 和条件渲染中接收道具
- java - Spring控制器中搜索的方法不起作用
- javascript - 为什么出现未定义?
- reactjs - 如果我在浏览器第一个选项卡中更新状态,如何更新浏览器第二个选项卡中的反应状态
- python - 如何将 json 数据从 HTML 提取到 python 字典中?
- python - Python JSON 对象追加
- android - 已解决 Xamarin Forms Datepicker 不适用于 Android