本文实例讲述了Python爬虫实现网页信息抓取功能。分享给大家供大家参考,具体如下:

首先实现关于网页解析、读取等操作我们要用到以下几个模块
import urllib import urllib2 import re
我们可以尝试一下用readline方法读某个网站,比如说百度
def test():
f=urllib.urlopen('http://www.baidu.com')
while True:
firstLine=f.readline()
print firstLine
下面我们说一下如何实现网页信息的抓取,比如说百度贴吧
我们大概要做几件事情:
首先获取网页及其代码,这里我们要实现多页,即其网址会改变,我们传递一个页数
def getPage(self,pageNum):
try:
url=self.baseURL+self.seeLZ+'&pn='+str(pageNum)
#创建request对象
request=urllib2.Request(url)
response=urllib2.urlopen(request)
#print 'URL:'+url
return response.read()
except Exception,e:
print e
之后我们要获取小说内容,这里咱们分为标题和正文。标题每页都有,所以我们获取一次就好了。
我们可以点击某网站,按f12查看他的标题标签是如何构造的,比如说百度贴吧是<title>…………
那我们就匹配reg=re.compile(r'<title>(.*?)。')来抓取这个信息
标题抓取完我们要开始抓去正文了,我们知道正文会有很多段,所以我们要循环的去抓取整个items,这里我们注意
对于文本的读写操作,一定要放在循环外。同时加入一些去除超链接、<br>等机制
最后,我们在主函数调用即可
完整代码:
# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#爬虫之网页信息抓取
#需要的函数方法:urllib,re,urllib2
import urllib
import urllib2
import re
#测试函数->读取
#def test():
# f=urllib.urlopen('http://www.baidu.com')
# while True:
# firstLine=f.readline()
# print firstLine
#针对于百度贴吧获取前十页楼主小说文本内容
class BDTB:
def __init__(self,baseUrl,seeLZ):
#成员变量
self.baseURL=baseUrl
self.seeLZ='?see_lz='+str(seeLZ)
#获取该页帖子的代码
def getPage(self,pageNum):
try:
url=self.baseURL+self.seeLZ+'&pn='+str(pageNum)
#创建request对象
request=urllib2.Request(url)
response=urllib2.urlopen(request)
#print 'URL:'+url
return response.read()
except Exception,e:
print e
#匹配标题
def Title(self):
html=self.getPage(1)
#compile提高正则匹配效率
reg=re.compile(r'<title>(.*?)。')
#返回list列表
items=re.findall(reg,html)
f=open('output.txt','w+')
item=('').join(items)
f.write('\t\t\t\t\t'+item.encode('gbk'))
f.close()
#匹配正文
def Text(self,pageNum):
html=self.getPage(pageNum)
#compile提高正则匹配效率
reg=re.compile(r'"d_post_content j_d_post_content ">(.*?)</div>')
#返回list列表
items=re.findall(reg,html)
f=open('output.txt','a+')
#[1:]切片,第一个元素不需要,去掉。
for i in items[1:]:
#超链接去除
removeAddr=re.compile('<a.*?>|</a>')
#用""替换
i=re.sub(removeAddr,"",i)
#<br>去除
i=i.replace('<br>','')
f.write('\n\n'+i.encode('gbk'))
f.close()
#调用入口
baseURL='http://tieba.baidu.com/p/4638659116'
bdtb=BDTB(baseURL,1)
print '爬虫正在启动....'.encode('gbk')
#多页
bdtb.Title()
print '抓取标题完毕!'.encode('gbk')
for i in range(1,11):
print '正在抓取第%02d页'.encode('gbk')%i
bdtb.Text(i)
print '抓取正文完毕!'.encode('gbk')
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools./regex/javascript
正则表达式在线生成工具:
http://tools./regex/create_reg
更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
# Python
# 爬虫
# 网页信息
# 抓取
# URL
# 正则
# 模块
# python3正则模块re的使用方法详解
# Python3中正则模块re.compile、re.match及re.search函数用法详解
# Python 正则模块详情
# 贴吧
# 我们可以
# 正则表达式
# 超链接
# 进阶
# 操作技巧
# 多页
# 几个
# 都有
# 会有
# 放在
# 相关内容
# 第一个
# 不需要
# 每页
# 数据结构
# 要做
# 给大家
# 要用
# 更多关于
相关文章:
建站之星如何实现网站加密操作?
已有域名和空间,如何快速搭建网站?
股票网站制作软件,网上股票怎么开户?
如何快速搭建高效香港服务器网站?
设计网站制作公司有哪些,制作网页教程?
IOS倒计时设置UIButton标题title的抖动问题
做企业网站制作流程,企业网站制作基本流程有哪些?
如何制作算命网站,怎么注册算命网站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
Android自定义listview布局实现上拉加载下拉刷新功能
,如何利用word制作宣传手册?
,南京靠谱的征婚网站?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
如何选择网络建站服务器?高效建站必看指南
制作网站的模板软件,网站怎么建设?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
建站之星如何防范黑客攻击与数据泄露?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
家庭服务器如何搭建个人网站?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
宝塔新建站点为何无法访问?如何排查?
如何在阿里云部署织梦网站?
中山网站制作网页,中山新生登记系统登记流程?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
威客平台建站流程解析:高效搭建教程与设计优化方案
如何在橙子建站上传落地页?操作指南详解
建站之星后台管理如何实现高效配置?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
建站之星如何保障用户数据免受黑客入侵?
建站之星安装后如何自定义网站颜色与字体?
网站制作的步骤包括,正确网址格式怎么写?
活动邀请函制作网站有哪些,活动邀请函文案?
PHP正则匹配日期和时间(时间戳转换)的实例代码
建站主机是否属于云主机类型?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
建站主机选购指南与交易推荐:核心配置解析
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
,怎么在广州志愿者网站注册?
如何注册花生壳免费域名并搭建个人网站?
建站主机解析:虚拟主机配置与服务器选择指南
如何用狗爹虚拟主机快速搭建网站?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
建站org新手必看:2024最新搭建流程与模板选择技巧
北京建设网站制作公司,北京古代建筑博物馆预约官网?
定制建站如何定义?其核心优势是什么?
如何通过西部数码建站助手快速创建专业网站?
如何在云主机上快速搭建网站?
如何通过西部建站助手安装IIS服务器?
*请认真填写需求信息,我们会在24小时内与您取得联系。