Problem: 一个HTML文件,找出里面的正文。

Solution: Find HTML Content, Python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# @Date : 2015-03-17 09:42:21
# @Author : NSSimacer
# @Version : 1.0
import urllib2
import re
def get_html_content(url):
'''
找出某个 HTML 文件中的正文部分
'''
html_content = urllib2.urlopen(url).read()
# 匹配正文的正则表达式
r = re.compile(r'<p>(?:<.[^>]*>)?(.*?)(?:<.[^>]*>)?</p>')
return r.findall(html_content)
if __name__ == '__main__':
url = 'http://www.huxiu.com/article/110304/1.html'
content = get_html_content(url)
with open('HTML Content.txt', 'w') as f:
for line in content:
f.write(line + '\n')

主要目的是熟悉基本的网页抓取操作,练习 Python 正则表达式的使用。涉及到的 API 有 urllib2.urlopen(self, args)read(self) 函数的使用,用于匹配正文中段落 p 的正则表达式,正则表达式模块 re 常用的API —— compile(self, args), match(self, args), findall(self, args)search(self, args) 等函数。

关于 Python 正则表达式模块 re,更多 API 请参考:Regular expression operations

题目来源:Python 练习册,每天一个小程序 THX!