从单个属性提取多个文本数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从单个属性提取多个文本数据相关的知识,希望对你有一定的参考价值。
我正在尝试从单个选择器的单个属性中提取一些数据字段。我的意思是,我要抓取的所有信息都包含在网站的某些部分中,我可以通过这种方式获得:
response.css('td::attr(onclick)').get()
当我运行它时,我收到:
handler(this, "HANDLE", "asdf":"5777","zxcv":"754401863","hjkl":"666","tyui":"277371661","name":"lolol","something":"someth1ng","type":"animal","genre":"javasux");return false;'
并且假设我要创建的Scrapy Items具有字段a,b和c,其中我希望a为上面摘录(666)的“ hjkl”的值,b为“名称”的值“(哈哈),c为” asdf“(5777)的值。
我应该在scrapper /项目的哪个位置包含执行此操作的逻辑?因为我很遗憾地认为我无法使用选择器从诸如asdf的这些字段中“获取”值,所以我不得不使用项目加载器/项目处理器,对吗?而且我认为实际选择必须使用regexp完成吗?我问是因为在这个特定的项目中,抓取一个站点相对简单,但是我要经历这些站点,而正则表达式从我的理解来看并不太快。
答案
是的,我认为正则表达式将是更简单的解决方案,最终它只是一个长字符串,因此您也可以对其进行清理以仅获取所需的信息,也许只是获得像字典和[C0 ]。
另一种方法是使用javascript解析器,因为这是您在该字符串中所拥有的。您可以使用json
。
以上是关于从单个属性提取多个文本数据的主要内容,如果未能解决你的问题,请参考以下文章
Apache Flume - 由多个使用者从单个消息队列中提取数据