gpt4 book ai didi

python - Urllib2 返回带有换行符和制表符的 HTML

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:49 25 4
gpt4 key购买 nike

我想从某个网站抓取 HTML,然后将其发送到 BeautifulSoup 进行解析。问题在于 urllib2.urlopen() 返回的 HTML 包含换行符 (\n) 和制表符 (\t) 以及单引号和其他转义字符。当我尝试使用此 HTML 构建 BeautifulSoup 对象时,出现错误。

b = BeautifulSoup(src)

给出 this error .

我的代码:

def get_page_source(url):
"""
Retrieves the HTML source code for url.
"""
try:
return urllib2.urlopen(url)
except:
return ""


def retrieve_links(url):
"""
Use the BeautifulSoup module to efficiently grab all links from the source
code retrieved by get_page_source.
"""
src = get_page_source(url)
b = BeautifulSoup(src)

.
.
.

我该如何解决这个问题?

编辑

import urllib2

link = "http://www.techcrunch.com/"
src = urllib2.urlopen(link).read()

f = open('out.txt', 'w')
f.write(src)
f.close()

给出 this output .

最佳答案

问题是您正在解析的 HTML 包含嵌入式 JavaScript 代码(BeautifulSoup 错误提示第 130 行,它位于嵌入式 JavaScript 的中间),而 JavaScript 包含嵌入式 HTML。

第 130 行,注意 <a>标签:

adNode += "<a href='http://t.aol.com?ncid=...

Matryoshka doll HTML 和 JavaScript,Python 的内置解析器无法处理。

您可以按照 BeatifulSoup 本身在您发布的错误消息中给出的说明安装解析器:

Python's built-in HTMLParser cannot parse the given document. This is not a bug in Beautiful Soup. The best solution is to install an external parser (lxml or html5lib), and use Beautiful Soup with that parser. See http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser for help.

关于python - Urllib2 返回带有换行符和制表符的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com