【问题标题】:Get data from HTML table in python 3 using urllib and BeautifulSoup使用 urllib 和 BeautifulSoup 从 python 3 中的 HTML 表中获取数据
【发布时间】:2017-05-12 05:09:03
【问题描述】:

我的磁盘中有一个 HTML 表格。我想先使用 urllib,然后再使用 BeautifulSoup。但是,我得到一个错误。这是我的代码:

from bs4 import  BeautifulSoup
import urllib.request     
Data ="C:/Splits.html"
page = urllib.request.urlopen(splitData).read()
page=splitData
soup = BeautifulSoup(page)

Splits.html 文件如下所示:

    A                   B      C       D
1 Company            Old FV  New FV  Split Date
2 Palred Tech          5       10    26-04-2016
3 ABM Knowledg        10       5     07-04-2016

我得到的错误如下:

  File "C:\Anaconda3\lib\urllib\request.py", line 1324, in unknown_open
    raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: c>

提前感谢您的帮助。

【问题讨论】:

  • 看来您正在调用splitData,但没有参数或对象,它应该是它的函数
  • 不应该splitDataData吗?...你不需要urllib,因为你正在使用本地文件,你可以用beautifulSoup打开文件跨度>
  • 尝试使用用户数据="file://C:/Splits.html"
  • 非常感谢您的回复。我使用了 Cyber​​Drone 的提示并且它有效,但它只需要是“file:///C:/Splits.html”,用三个 / 而不是两个。@ danidee,如果你直接去 BeautifulSoup 它只是解析名称文件,而不是文件,至少在我的机器上。

标签: python beautifulsoup urllib


【解决方案1】:

要读取本地文件,请使用 open() 并将文件对象传递给 BeautifulSoup 构造函数:

with open("path/to/file") as f:
    soup = BeautifulSoup(f, "html.parser")

请注意,无需实际读取文件 - BeautifulSoup 会为您完成。

【讨论】:

    【解决方案2】:

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

    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(open("index.html"))
    
    soup = BeautifulSoup("<html>data</html>")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 2018-09-22
      • 2019-12-01
      • 1970-01-01
      相关资源
      最近更新 更多