我目前正在以html的格式处理一些数据。文件的格式或多或少是这样的(请记住,我已经删除了大部分内容,为了简单起见,在线显示代码):
<HTML><HEAD>
<TITLE>some header here</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<P>Some contents that I don't want</P>
<PRE> THE HITCHER
A film review by Mark R. Leeper
Copyright 1987 Mark R. Leeper</PRE>
<P>// some body paragraphs that I need</P>
<P> //some body paragraphs that I need</P>
<PRE>tags that I don't want</PRE>
<HR><P CLASS=flush><SMALL>tags that I don't want</SMALL></P>
<P ALIGN=CENTER>tags that I don't want</A></P>
</P></BODY></HTML>
我只想让标记为<P> //some body paragraphs that I need</P>
的部分并将其作为字符串读入python程序。但我发现很难做到。任何人都可以帮助我吗?
如果这样做并不容易,至少告诉我如何删除整个标记,如果它包含一些子串。假设我想摆脱标签(从标签的开头到标签的末尾,包括内容,在这种情况下,就是这一行
<PRE> THE HITCHER
A film review by Mark R. Leeper
Copyright 1987 Mark R. Leeper</PRE>
)包含关键字“版权”。
对于可能关心的人,数据来自IMDB数据库,我是从康奈尔大学的网站下载的。
答案 0 :(得分:0)
你需要两个图书馆来解决这个问题。一个从互联网上获取页面内容requests
。然后另一个解析HTML内容,BeautifulSoup.
下面的代码转到一个带有基本HTML的示例网站。
from bs4 import BeautifulSoup
import requests
page = requests.get("http://dataquestio.github.io/web-scraping-pages/simple.html")
soup = BeautifulSoup(page.content, 'html.parser')
print "Formated HTML"
print "*****************"
print soup.prettify()
print "*****************"
p_list=soup.find_all('p')
print p_list
对于python 3,您需要将打印功能更改为python 3格式,例如:
print p_list
到print(p_list)
。
根据以下评论中的问题。
您可以在不使用请求方法的情况下从本地HTML文件中读取数据。这可以通过简单地打开文件并将数据读入变量来完成,以获得美味的汤。请记住更改open函数内的文件名。
with open('test.html', 'r') as f:
read_data = f.read()
soup = BeautifulSoup(read_data, 'html.parser')