使用Python进行Web抓取

Jac*_*nds 9 python firefox webkit web-scraping

我目前正试图抓取一个格式相当差的HTML网站(通常缺少结束标签,不使用类或ID,所以直接找到你想要的元素非常困难等等).到目前为止,我一直在使用BeautifulSoup取得了一些成功,但每隔一段时间(尽管很少),我会遇到一个页面,其中BeautifulSoup创建的HTML树与(例如)Firefox或Webkit略有不同.虽然这是可以理解的,因为HTML的格式化使这种模糊,如果我能够获得与Firefox或Webkit产生相同的解析树,我将能够更容易地解析事物.问题通常是网站打开<b>标签两次,当BeautifulSoup看到第二个<b>标签时,它会立即关闭第一个标签,而Firefox和Webkit嵌套<b>标签.

是否存在用于Python(甚至任何其他语言(我正在变得绝望))的Web抓取库,它可以重现由Firefox或WebKit生成的解析树(或者在模糊的情况下至少比BeautifulSoup更接近).

jfs*_*jfs 10

BeautifulSoup一棵树建设者html5lib:

from html5lib import HTMLParser, treebuilders

parser = HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup"))

text = "a<b>b<b>c"
soup = parser.parse(text)
print soup.prettify()
Run Code Online (Sandbox Code Playgroud)

输出:

<html>
 <head>
 </head>
 <body>
  a
  <b>
   b
   <b>
    c
   </b>
  </b>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)