美丽的汤lxml字符编码问题

时间:2017-06-18 22:31:00

标签: encoding beautifulsoup python-requests

我试图解析一个上面有不可打印字符的网页,并将其写入python中的文件。我正在使用带有请求的Python 2.7和Beautiful Soup。

我得到了包含请求的页面,并使用以下内容进行解析 -

for option in recon:
    data['opts'] = '/c' + option
    print "Getting: ",
    print option
    r = requests.post(url, data)
    print r.content
    page = bs4.BeautifulSoup(r.content, "lxml", from_encoding='utf-8')
    print page
    tag = page.pre.contents
    print tag[0]

测试时, print r.content 会在所有未格式化的荣耀中正确显示页面。该页面是.cfm,我要查找的文字介于" pre" 标记之间。通过bs后,bs将一些不可打印的文本解释为" br" 标签,导致标签成为2个项目的列表,而不仅仅是所有文本之间的所有文本。预标签。有没有办法让pre标签与请求之间得到文本,或者用bs做一些不同的事情,以使它不会误解字符?

我已经阅读了以下内容,试图弄明白,加上请求和漂亮的汤文档,但到目前为止没有找到运气 -

Joel on Software - Character Sets

SO utf-8 vs unicode

SO Getting text between tags

1 个答案:

答案 0 :(得分:0)

彻底解决了这个问题。我只是在使用certutil在Windows上传输之前对base64进行了编码,删除了第一行和最后一行,然后在远端进行了解码。