如果包含一些字符串,如何使用python将内容与html标记一起删除

时间:2018-03-19 14:11:51

标签: html python-2.7 tags

我目前正在以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数据库,我是从康奈尔大学的网站下载的。

1 个答案:

答案 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_listprint(p_list)

根据以下评论中的问题。

您可以在不使用请求方法的情况下从本地HTML文件中读取数据。这可以通过简单地打开文件并将数据读入变量来完成,以获得美味的汤。请记住更改open函数内的文件名。

with open('test.html', 'r') as f:
    read_data = f.read()
soup = BeautifulSoup(read_data, 'html.parser')