我是靠谱客的博主 无聊芒果,最近开发中收集的这篇文章主要介绍解析列表中的数据python_创建循环以在scrapy / python中解析表数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用使用scrapy的python脚本,该脚本从网站中抓取数据,将其分配给3个字段,然后生成一个.csv。可以,但是有一个主要问题。所有字段都包含所有数据,而不是针对每个表行将其分开。我确定这是由于我的循环无法正常工作,当它找到xpath时,它只获取每一行的所有数据,然后继续获取其他2个字段的数据,而不是创建单独的行

def parse(self, response):

hxs = HtmlXPathSelector(response)

divs = hxs.select('//tr[@class="someclass"]')

for div in divs:

item = TestBotItem()

item['var1'] = div.select('//table/tbody/tr[*]/td[2]/p/span[2]/text()').extract()

item['var2'] = div.select('//table/tbody/tr[*]/td[3]/p/span[2]/text()').extract()

item['var3'] = div.select('//table/tbody/tr[*]/td[4]/p/text()').extract()

return item

我需要抓取的网站上的每个条目,带有*的tr的数量都会增加,其他两个路径位于下面。我该如何编辑它,使其仅捕获// table / tbody / tr [3]的第一组数据,将其存储在所有三个字段中,然后移至// table / tbody / tr [4]等? ?

更新资料

可以正常工作,但是我尝试向pipelines.py文件添加一些验证,以删除var1大于100%的所有记录。我确定下面的代码是错误的,并且“ yield”而不是“ return”会停止正在使用的管道吗?

from scrapy.exceptions import DropItem

class TestbotPipeline(object):

def process_item(self, item, spider):

if item('var1') > 100%:

return item

else:

raise Dropitem(item)

最后

以上就是无聊芒果为你收集整理的解析列表中的数据python_创建循环以在scrapy / python中解析表数据的全部内容,希望文章能够帮你解决解析列表中的数据python_创建循环以在scrapy / python中解析表数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部