- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 python requests 模块获取远程页面,重建 DOM 树,进行一些处理并将结果保存到文件中。当我获取页面然后将其写入文件时,一切正常(我可以稍后在浏览器中打开一个 html 文件,并且它会正确呈现)。
但是,如果我创建一个 pyquery 对象并进行一些处理,然后使用 str 转换保存它,则会失败。具体来说,像 && 等特殊字符在保存的源的脚本标签中被修改(由 pyquery 的应用引起),并且它会阻止页面正确渲染。
这是我的代码:
import requests
from lxml import etree
from pyquery import PyQuery as pq
user_agent = {'User-agent': 'Mozilla/5.0'}
r = requests.get('http://www.google.com',headers=user_agent, timeout=4)
DOM = pq(r.text)
#some optional processing
fTest = open("fTest.html","wb")
fTest.write(str(DOM))
fTest.close()
所以,问题是:如何确保在应用 pyquery 后特殊字符不会被转义? 我想它可能与 lxml (pyquery 的父库)有关,但是在乏味之后在线搜索并尝试不同的对象序列化方式我仍然没有成功。也许这也与 unicode 处理有关?!
非常感谢!
最佳答案
我找到了一个优雅的解决方案来解决这个问题以及代码之前不起作用的原因。
首先,您可以仔细阅读http://lxml.de/lxmlhtml.html页面。它有一个部分“使用 E-factory 创建 HTML”。在本节之后,他们指出 etree.tostring() 方法
仅适用于 XML。但对于具有脚本或样式标签的额外可能性的 HTML 来说,它会把事情弄乱。所以..其次,解决方案是使用重载方法html.tostring()
。
最终的工作代码是:
# for networking
import requests
# for parsing and serialization
from lxml import etree
from lxml.html import tostring as html2str # IMPORTANT!!!
from pyquery import PyQuery as pq
user_agent = {'User-agent': 'Mozilla/5.0'}
r = requests.get('http://www.google.com',headers=user_agent, timeout=4)
# construct DOM object
DOM = pq(r.text)
# do stuff with DOM
#
# save result to file
fTest = open("fTest.html","wb")
fTest.write(html2str(DOM.root)) # IMPORTANT!!!
fTest.close()
希望它能在将来节省你们中的一些人的时间!玩得开心! ;)
关于python - 如何在将 pyquery 对象转换为字符串时取消转义特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13437476/
我尝试使用 PyQuery 从 html 文件中获取所有“id”,但带来了麻烦......我尝试这样做: from pyquery import PyQuery file = open('index.
我的问题是我必须抓取一个具有以下内容的网站: blah blah 同一网站中的另一个 div 如下: blah blah 要抓取没有空间的网站,我可以使用它 pyquery('.xyz').tex
如何将类属性追加或插入到其子元素中,但仅限于直接子元素,然后为下一个类和子元素重复它。 在文档中它被引用在这里 pyquery manipulating >>> d = pq('python !')
1,使用xpath清理不必要的标签元素,以及无内容标签 ? 1
我正在尝试使用 python requests 模块获取远程页面,重建 DOM 树,进行一些处理并将结果保存到文件中。当我获取页面然后将其写入文件时,一切正常(我可以稍后在浏览器中打开一个 html
for l in d.items('nl,de,en'): if l.tag()=='nl': dothis() 如何找到与 pyquery 对象关联的标签?方法 tag() 在上面
我首先尝试使用 pypm 安装它,基本上与使用 pip 时的体验相同(为此我复制/粘贴了下面的输出)。安装提示说它已安装,对于 pip 和 pypm,pyquery 出现在安装列表中。但是当我进入 p
有一个名为“name.txt”的文件 内容如下 现在想用pyquery获取所有输入标签,然后遍历输入标签 使用'.
如何使用 PyQuery 从此元标记获取 content 值? from pyquery import PyQuery def get_data(myurl): query = PyQuer
我有以下 HTML: $325.00$295.00 我想拿出 295 美元。但是,如果我简单地使用 PyQuery 如下: price = pq('h1').text() 我得到了两个价格。 E
我正在使用 PyQuery 并想打印链接列表,但不知道如何从 PyQuery 语法中的每个链接获取 href 属性。 这是我的代码: e = pq(url=results_url) links
由于我不确定我面临的问题是错误还是我缺乏知识,所以我想请求您的帮助。 情况是,当尝试使用 PyQuery 解析此 url ( http://ies.ieee-ies.org/resources/med
我正在尝试将 pyquery 与 pypy 一起使用,但它依赖于 lxml2,它不会在 pypy 下构建。我知道有一个 lxml2 构建旨在与 pypy 一起使用,但我不知道如何让 pyquery 使
我正在尝试编写一个程序,从 .txt 文件的每一行中提取 url,并执行 PyQuery 以从 LyricsWiki 中抓取歌词数据,在我实际将 PyQuery 内容放入之前,一切似乎都工作正常。例如
有没有人有使用直接 lxml 与 PyQuery 进行抓取的经验。我最近刚刚遇到后者并且很感兴趣。我还没有找到很多关于这个库的评论,所以我很好奇它有多健壮。 我熟悉 lxml 并且大体上喜欢它。然而,
我想在 Windows 上安装 pyquery。但我无法在命令行上运行 setup.py install。你有什么提示吗? 最佳答案 我猜你没有安装 lxml 或 setuptools 设置工具 ht
我正在尝试通过 pip 安装 PyQuery,但出现了一个我无法理解的错误。我使用的命令是: sudo pip install pyquery 我得到以下输出: Requirement already
你们知道PyQuery ? 我想知道 Ruby 是否有等效的东西。 最佳答案 Hpricot - Most jQuery-like HTML parser for Ruby 关于python - 有
我正在尝试使用 pyquery 1.2 从元素中获取一些文本。显示的文本中没有空格,但 pyquery 正在插入空格。 这是我的代码: from pyquery import PyQuery as p
我有一个看起来像 this 的 XML 文件.相关的部分是这样的: Vander Wal JS, Gang CH, Griffing GT, Gadde KM. Escitalopram for
我是一名优秀的程序员,十分优秀!