现在的位置: 首页 > 软件测试 > 测试工具 > 软件测试 > 正文

Python网页爬虫入门——抓取百度贴吧内容实例

2014年09月25日 测试工具, 软件测试 ⁄ 共 1466字 ⁄ 字号 评论 1 条 ⁄ 阅读 7,316 次

本文主要介绍编写Python网页爬虫的基本原理,同时以抓取百度贴吧内容的实例进行讲解。

1. 需要掌握的基础知识:

urllib2模块

re模块 (正则表达式)

2. 网页爬虫基本流程:

打开网页- >分析网页内容,编写正则表达式->筛选所需内容->进行必要特殊符号转码处理

3. 具体流程介绍

重点介绍下页面分析的方法:

1. 使用chrome浏览器,打开示例页面http://tieba.baidu.com/p/3295185529?see_lz=1

2. 在帖子标题处,右键选择"审查元素",可以看到标题的源代码

3. 进行简单的分析,我们需要获取的是title后面的内容,根据页面实际内容,我们编写相应的正则表达式

title_re=re.compile('<h1 class="core_title_txt  " title="(.*?)"')

4. 同理,我们对帖子内容进行"审查元素",得到内容的源代码

5. 编写相应的正则表达式如下:

content_re=re.compile('<div id="post_content_\d*" class="d_post_content j_d_post_content ">(.*?)</div>')

6. 这样通过urllib2打开页面后,使用上述的正则表达式进行匹配,再对标题和文本内容进行相应的处理即可

7. 完整代码:

# -*- coding:utf-8 -*-

import urllib2
import re

url='http://tieba.baidu.com/p/3295185529?see_lz=1'

#打开页面并进行转码
page=urllib2.urlopen(url).read().decode('gbk')
print 'Open %s'%url

#去掉超链接和图片
none_re=re.compile('<a href=.*?>|</a>|<img.*?>')

#换行符转换
br_re=re.compile('<br>')

#标题
title_re=re.compile('<h1 class="core_title_txt  " title="(.*?)"')
#帖子内容
content_re=re.compile('<div id="post_content_\d*" class="d_post_content j_d_post_content ">(.*?)</div>')

#搜索文章标题,并去掉文件标题可能含有的特殊符号
title=re.search(title_re,page)
title=title.group(1).replace('\\','').replace('/','').replace(':','').replace('*','').replace('?','').replace('"','').replace('>','').replace('<','').replace('|','')  

#搜索文本内容
content=re.findall(content_re,page)

with open('%s.txt'%title,'w') as f:
    print 'Writing %s.txt now...'%title
    for i in content:
        
        #对html特殊符号进行替换处理
        i=re.sub(none_re, '', i)
        i=re.sub(br_re, '\n', i)
        
        #写入文本文件
        f.write(i.encode('utf-8').strip()+'\n')
    print 'Done!'

8. 运行截图及生成的txt文件如下:

 

目前有 1 条留言    访客:1 条, 博主:0 条

  1. king 2016年08月05日 17:38  @回复  Δ1楼 回复

    简单粗暴 可以~

给我留言

留言无头像?