这两天初学Scrapy用来爬虫网页上的数据,写了一个爬虫发现我可以成功地爬到数据,但是存储为json数据或者json lines数据时一直为空文件,也不知道怎么回事,各种搜索资料,有的说是没配置好pipelines文件,有的说是没配置好settings文件,检查我的这两个文件,感觉不像是这两个文件的问题,才发现了一个巨坑的问题(由于yield关键字之前只是见过但没使用过所以也是这两天才学习的,可能才造成了这个问题。。。):
下面这个是有问题的代码,一直存储不了数据。。。

    def parse(self, response):
        for stock in response.css("div#ctl00_cph1_divSymbols table.quotes tr")[1:]:  #不处理第一个tr
            yield
            {
                'code':stock.css("td a::text").get(),
                'name':stock.css("td")[1].css("::text").get()
            }

下面是正确运行的代码:

    def parse(self, response):
        for stock in response.css("div#ctl00_cph1_divSymbols table.quotes tr")[1:]:  #不处理第一个tr
            yield{
                'code':stock.css("td a::text").get(),
                'name':stock.css("td")[1].css("::text").get()
            }

对比一下,可以发现就是yield的第一个花括号位置不同的问题。。。找了一两个小时的bug做梦都没想到是花括号的问题。
如果有小伙伴和我一样的问题,那么下次一定不要随便放花括号了【气哭 😦😦,下次一定不会乱放花括号了

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 2 个月前
8c391e04 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐