繁体   English   中英

BeautifulSoup(bs4),html5lib,HTMLParseError:格式错误的开始标记,在第1行第11列

[英]BeautifulSoup (bs4), html5lib, HTMLParseError: malformed start tag, at line 1, column 11

我需要将网站的源代码复制到本地存储的html文件中,因为直接从url进行解析无法捕获所有页面元素。 我希望在源代码的表中提取位置元素以用于地理编码。 我的程序遍历了几页搜索结果,将每一页的源代码写入本地存储的html文件中。 地址元素仅占每页材料的三分之一,因此最好删除其他元素以减小文件大小。

为此,我希望程序打开一个空白的html文档进行编写,向其编写当前页面的源代码,关闭该文档,重新打开以进行解析(现在以“ r”模式),打开一个新的文档进行编写,并使用漂亮的汤来捕获第一个文档中的所有地理编码数据,并将其写入新文档中。 然后,程序将关闭第一个文档,然后再次以“ w”模式重新打开它。

这将循环执行,因此第一个文档将始终被当前页面的源代码覆盖,而第二个文档将保持打开状态,并仅将地理编码数据写入其中,直到没有更多页面为止。

循环,导航以及将源代码写入文件的一切都工作正常,但我无法弄清解析部分。 我尝试使用以下代码在交互式环境中进行实验:

from bs4 import BeautifulSoup
import html5lib

data = open(r"C:\GIS DataBase\web_resutls_raw_new_test.html",'r').read()
document = html5lib.parse(data)
soup = BeautifulSoup(str(document))

我得到以下错误:

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python27\lib\bs4\__init__.py", line 228, in __init__
    self._feed()
  File "C:\Python27\lib\bs4\__init__.py", line 289, in _feed
    self.builder.feed(self.markup)
  File "C:\Python27\lib\bs4\builder\_htmlparser.py", line 219, in feed
    raise e
HTMLParseError: malformed start tag, at line 1, column 11

所以我尝试了以下修复程序:

soup = HTMLParser.handle_starttag(BeautifulSoup(str(document)))

a:

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python27\lib\bs4\__init__.py", line 228, in __init__
    self._feed()
  File "C:\Python27\lib\bs4\__init__.py", line 289, in _feed
    self.builder.feed(self.markup)
  File "C:\Python27\lib\bs4\builder\_htmlparser.py", line 219, in feed
    raise e
HTMLParseError: malformed start tag, at line 1, column 11

我也尝试使用lxml,ertree,但似乎没有任何效果。 我无法直接从网址获取需要解析的元素。 我需要从html文件进行解析。

data直接传递给BeautifulSoup

soup = BeautifulSoup(data,'html.parser')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM