Python:从HTML中提取行

时间:2013-09-22 16:39:56

标签: python

我对Python很新......

我正在编写一个使用urllib2库来搜索某个网页的代码。我使用命令re.findall来搜索此网页上的特定字符串。但是,我想提取这些字符串出现的整个行,而不是提取这些特定的字符串。

例如,假设我在网页上搜索“hello”这个词,如下所示:

  

你好,我的名字是鲍勃。我是鲍勃。

     

我的朋友是简。

     

我的名字是简......你好!

我想提取其中包含“hello”的行。 (这意味着我想要提取第一行和第三行。)这是我在下面使用的,这显然是错误的,因为它只提取单词,而不是单词出现的整行:

Page_Content = urllib2.urlopen(My_URL).read()
Matches = re.findall("hello", Page_Content)

如何修改此代码以提取整行?我是否必须使用某种类型的for循环并逐行搜索?如果是这样,我将如何做到这一点?

for line in Page_Content
[code here]

2 个答案:

答案 0 :(得分:0)

对于正则表达式问题,您可以迭代文件并使用re.search

for line in content:
   if re.search("hello",line):
      print line

或更好,首先编译

val pat = re.compile("hello")    
for line in content:
   if pat.search(line):
       print line

答案 1 :(得分:0)

我喜欢Eran的方法,但这是使用正则表达式的另一种方法,避免使用for循环:

pattern = re.compile("\n.*hello.*\n")
matching_lines = re.findall(pattern, Page_Content)

通过用\n包围模式,我们确保匹配整行。 .*是“任何字符零或更多”的正则表达式,因此它将匹配任何带有“hello”的行。