0

我在本地机器上保存了静态 HTML 页面。我尝试使用简单的文件打开和 BeautifulSoup。打开文件时,由于 unicode 错误,它不会读取整个 html 文件,而 BeautifulSoup 它适用于实时网站。

#with beautifulSoup
from bs4 import BeautifulSoup
import urllib.request
url="Stack Overflow.html"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page.read())
universities=soup.find_all('a',class_='institution')
for university in universities:
    print(university['href']+","+university.string)


#Simple file read
with open('Stack Overflow.html', encoding='utf-8') as f:
    for line in f:
        print(repr(line))

阅读 HTML 后,我希望从中提取数据ul并且li没有任何属性。欢迎任何建议。

4

2 回答 2

1

我不知道你到底是什么意思。我只是了解您想从本地存储中读取整个 html 数据并使用bs4.

正确的?

我在这里建议一些代码:

from bs4 import BeautifulSoup

with open("Stack Overflow.html", encoding="utf-8") as f:
    data = f.read()
    soup = BeautifulSoup(data, 'html.parser')
    # universities = soup.find_all('a', class_='institution')
    # for university in universities:
    #     print(university['href'] + "," + university.string)
    ul_list = soup.select("ul")
    for ul in ul_list:
        if not ul.attrs:
            for li in ul.select("li"):
                if not li.attrs:
                    print(li.get_text().strip())
于 2017-01-03T05:16:50.620 回答
1

这个问题是关于如何构造一个 BeautifulSoup 对象。

要解析文档,请将其传递给 BeautifulSoup 构造函数。您可以传入一个字符串或一个打开的文件句柄:

from bs4 import BeautifulSoup

soup = BeautifulSoup(open("index.html"))

soup = BeautifulSoup("<html>data</html>")

只需将一个文件对象传递给BeautifulSoup,您不需要专门添加编码信息,BS 会处理。

首先,将文档转换为 Unicode,将 HTML 实体转换为 Unicode 字符:

如果您在提取数据时遇到问题,您应该发布 html 代码。

提炼:

import bs4

html = '''<ul class="indent"> <li><i>dependency-check version</i>: 1.4.3</li> <li><i>Report Generated On</i>: Dec 30, 2016 at 13:33:27 UTC</li> <li><i>Dependencies Scanned</i>:&nbsp;0 (0 unique)</li> <li><i>Vulnerable Dependencies</i>:&nbsp;0</li> <li><i>Vulnerabilities Found</i>:&nbsp;0</li> <li><i>Vulnerabilities Suppressed</i>:&nbsp;0</li> <li class="scaninfo">...</li>'''

soup = bs4.BeautifulSoup(html, 'lxml')
for i in soup.find_all('li', class_=False):
    print(i.text)

出去:

dependency-check version: 1.4.3
Report Generated On: Dec 30, 2016 at 13:33:27 UTC
Dependencies Scanned: 0 (0 unique)
Vulnerable Dependencies: 0
Vulnerabilities Found: 0
Vulnerabilities Suppressed: 0
于 2017-01-03T06:22:33.060 回答