Python-如何从html文档中获取文本块

时间:2017-01-11 21:33:45

标签: python web-scraping beautifulsoup

https://www.cpms.osd.mil/Content/AF%20Schedules/survey-sch/111/111R-03Apr2003.html 这是我试图解析的页面。这是来自政府网站,根据我的经验,他不知道如何保存他们的证书,因此您将被告知您的浏览器不安全。我想要的就是这部分,http://imgur.com/a/BL14W

编辑:对不起,因缺乏信息。我开始问这个问题,然后我被叫去工作。这不是理由,但是当我回来的时候是时候回家了,我只是点击提交。

我已经尝试过“手动”进行更多操作,但显然并非所有文档都完全相同。这是我试过的:

def table_parser(page):
    file = open(page)
    table = []
    num = 0
    for line in file:
        if 'Grade' in line:
            num += 1
        if num > 0:
            num += 1
        if 3 <= num < 21:
            line = line.rstrip()
            if line != '':
                split_line = line.split(' ')
                split_line = [x for x in split_line if x != '']
                strip_line = split_line[:16]
                table.append(strip_line)
    WG = []
    WL = []
    WS = []
    for l in table:
        WG.append((l[1:6]))
        WL.append(l[6:11])
        WS.append(l[11:16])

    file.close()
    # Return 3 lists for the 3 charts I want
    return WG, WL, WS

这是我使用的,我开始使用的65k文件中的大约一半大部分是正确的。我将返回的列表传递给csv编写器来存储它们,直到我可以将它们全部清理干净。我知道可能有更好的方法,但是在我能够把头包裹在BeautifulSoup之前我想出了这个。我不一定希望代码执行此操作,只是指向从哪里开始。我试图在BeautifulSoup上找到文档,但我无法弄清楚从哪里开始我需要的东西。

1 个答案:

答案 0 :(得分:0)

您的问题有点模糊,所以我会尽力帮助您。

1。安装美丽的汤4

要从网页获取文本块,您需要使用外部库BeautifulSoup4(BS4)。下载并安装到您的计算机后,首先使用以下from bs4 import BeautifulSoupimport urllib.request导入BS4。然后只需使用soup = BeautifulSoup("", "html.parser")设置BS4。

2。下载网页

下载网页很简单,只需使用site_download = urllib.request.urlopen(url)即可。在您的情况下,只需将“url”替换为您在此处提供的URL。然后,我们需要使用site_read = site_download.read().decode('utf-8')后跟soup = BeautifulSoup(site_read, "html.parser")来阅读我们下载的内容。

3。获取文本块

您可以通过多种方式获取文字,因此我将向您展示一些示例。

获取&lt;的第一个实例P>标签(段落)文字:

text = soup.find("p")
text = getText()

获取&lt;的所有实例P>标记:

text = soup.findAll("p")
text = getText()

从特定类中获取文本:

text = soup.find(attrs={"class": "class_name_here"})
text = getText()

4。更多信息

有关如何获取不同类型标签的更多信息以及您可以使用BS4执行的其他操作可以找到HERE