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上找到文档,但我无法弄清楚从哪里开始我需要的东西。
答案 0 :(得分:0)
您的问题有点模糊,所以我会尽力帮助您。
要从网页获取文本块,您需要使用外部库BeautifulSoup4(BS4)。下载并安装到您的计算机后,首先使用以下from bs4 import BeautifulSoup
和import urllib.request
导入BS4。然后只需使用soup = BeautifulSoup("", "html.parser")
设置BS4。
下载网页很简单,只需使用site_download = urllib.request.urlopen(url)
即可。在您的情况下,只需将“url”替换为您在此处提供的URL。然后,我们需要使用site_read = site_download.read().decode('utf-8')
后跟soup = BeautifulSoup(site_read, "html.parser")
来阅读我们下载的内容。
您可以通过多种方式获取文字,因此我将向您展示一些示例。
获取&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()
有关如何获取不同类型标签的更多信息以及您可以使用BS4执行的其他操作可以找到HERE。