如何从 Scrapy 选择器中提取原始 html? [英] How to extract raw html from a Scrapy selector?

查看:30
本文介绍了如何从 Scrapy 选择器中提取原始 html?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 response.xpath('//*')re_first() 提取 js 数据,然后将其转换为 Python 本机数据.问题是提取/重新方法似乎没有提供一种不取消引用 html 的方法,即

原始 html:

{my_fields:['O'Connor Park'], }

提取输出:

{my_fields:['O'Connor Park'], }

将此输出转换为 json 不起作用.

最简单的方法是什么?

解决方案

简短回答:

  • Scrapy/Parsel 选择器的 .re().re_first() 方法替换 HTML 实体(&lt;、<代码>&amp;)
  • 相反,使用 .extract().extract_first() 获取原始 HTML(或原始 JavaScript 指令)并使用 Python 的 re提取字符串的模块

长答案:

让我们看一个示例输入以及从 HTML 中提取 Javascript 数据的各种方法.

示例 HTML:

<身体><div><script type="text/javascript">var i = {a:['O&#39;Connor Park']}

</html>

使用scrapy Selector,它在下面使用parsel 库,您可以通过多种方式提取Javascript 代码段:

<预><代码>>>>导入scrapy>>>t = """... <身体>... <div>... <script type="text/javascript">... var i = {a:['O&#39;Connor Park']}... </script>...... </div>... </body>... </html>……">>>selector = scrapy.Selector(text=t, type="html")>>>>>># 提取<脚本>元素作为原始 HTML>>>selector.xpath('//div/script').extract_first()u'<script type="text/javascript">\n var i = {a:[\'O&#39;Connor Park\']}\n </script>'>>>>>># 只获取
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆