wak*_*aka 5 python xml lxml mechanize
我正在使用mechanize / cookiejar / lxml来读取页面,它适用于某些页面,但不适用于其他页面。我遇到的错误是标题中的错误。由于它们不是SFW,因此无法在此处发布页面,但是有没有办法解决?基本上,这就是我要做的:
import mechanize, cookielib
from lxml import etree
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(False)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 maverick Firefox/3.6.13')]
response = br.open('...')
tree = etree.parse(response) #error
Run Code Online (Sandbox Code Playgroud)
之后,我获得根目录并在文档中搜索所需的值。显然iterparse不会使它崩溃,但是目前,我认为它不仅仅是因为我没有使用它处理任何事情。另外,我还没有弄清楚如何用它来搜索东西。
我尝试禁用gzip并启用发送引荐来源网址,但都不能解决问题。我也尝试将源代码保存到磁盘并仅出于此目的从那里创建树,并且遇到相同的错误。
编辑
我得到的答复似乎很好,如我得到建议使用print repr(response)<response_seek_wrapper at 0xa4a160c whose wrapped object = <stupid_gzip_wrapper at 0xa49acec whose fp = <socket._fileobject object at 0xa49c32c>>>。我还可以使用read()方法保存响应,并检查保存的.xml是否可在浏览器及其他所有设备上正常工作。
另外,在其中一个页面中,有个’错误提示我:“ lxml.etree.XMLSyntaxError:未定义实体'rsquo',第17行,第7054列”。到目前为止,我已经用正则表达式替换了它,但是有解析器可以处理吗?即使使用下面建议的lxml.html.parse,我也遇到了此错误。
关于突出显示的文件,我的意思是当我使用gEdit打开它时,它会执行以下操作:http ://img34.imageshack.us/img34/9574/gedit.jpg
| 归档时间: |
|
| 查看次数: |
7837 次 |
| 最近记录: |