scrapy shell通过列表生成式未得到正确的结果,与单独测试不一致

过程

今天用 scrapy shell 做爬虫测试的时候,列表生成式语法 [x for x in x_s if x != ""] 的结果和单独测试的结果不一致,让我出乎意料。如下图:
scrapy shell通过列表生成式未得到正确的结果,与单独测试不一致
上图是 scrapy shell 上,我用pyquery语法提取的数据的到的结果并没有过滤掉 "" 元素,然后我又单独将这个结果复制到了 python shell 上,用同样的例子进行测试,结果如下图:
scrapy shell通过列表生成式未得到正确的结果,与单独测试不一致

scrapy shell通过列表生成式未得到正确的结果,与单独测试不一致
可以看到得出的结果却是自己想要的。

结论问题

屡一下问题:用pyquery 的生成式语法得到的结果,和单独的测试生成式语法的结果出现了不一致,都是列表,为什么这里不能过滤掉列表中的 "" 符号呢?

代码

# scrapy调试:

scrapy shell -s USER_AGENT="Mozilla/5.0 (iPad; CPU OS 11\_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1" "https://movie.douban.com/subject/1292052/"

# 生成器语法

[item.text() for item in doc(".recommendations-bd").find("a").items() if item!='']

# 通过其他途径已经解决的方法:

[item.text() for item in doc(".recommendations-bd dl dd a").items()]

万分感谢各位大佬解惑,谢谢!


回答:

看上去item的类型是个对象,你把对象直接跟空字符串做比较应该不行。

你尝试把最后的条件修改下:
item!=='' 改成
item.text()!=''

# 生成器语法

[item.text() for item in doc(".recommendations-bd").find("a").items() if item.text()!='']

以上是 scrapy shell通过列表生成式未得到正确的结果,与单独测试不一致 的全部内容, 来源链接: utcz.com/a/162959.html

回到顶部