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,urllib2import 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=baseUrlself.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:'+urlreturn 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')%ibdtb.Text(i)
print '抓取正文完毕!'.encode('gbk')
python——爬虫实现网页信息抓取相关推荐
- Python爬虫实战六之抓取爱问知识人问题并保存至数据库
大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...
- [Python爬虫] 三、数据抓取之Requests HTTP 库
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 一.urllib 模块 所谓网页抓取,就是把URL ...
- Python爬虫包 BeautifulSoup 递归抓取实例详解
Python爬虫包 BeautifulSoup 递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另 ...
- Python爬虫之gif图片抓取
Python爬虫之gif图片抓取 标签:图片爬虫 这几天,对于怎么去爬取图片很感兴趣,就研究了一下,图片爬虫可以说是有简单,更有复杂的,今天,我做了一个比较简单的gif的图片爬虫,仅仅学习一下怎么进行 ...
- Python 爬虫 中国行政区划信息爬取 (初学者)
Python 爬虫 中国行政区划信息爬取 (初学者) 背景 环境准备 代码片段 1.定义地址信息对象 2.地址解析对象 2.1 获取web信息 2.2 web信息解析 2.3 区划信息提取 2.4 省 ...
- [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...
- 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23866427 今天又遇到一个网页数据抓取的任务,给大家分享下. 说道网页信息抓取 ...
- Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接
Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接 1. 前言 2. 实现过程 3. 运行结果 1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到 ...
- 用python进行分布式网页数据抓取(一)——设计
这几天做一个小项目,分给我的模块是对于BOKECC体系网站的抓取. 从来没有用过python,这次来尝一下鲜,感觉还行~ BOKECC就是一个视频网站的解决方案,我的任务很简单,就是给定一个网址,我来 ...
最新文章
- 什么是CNN?写给小白的机器学习入门贴,Facebook员工打造,47k访问量
- oracle技术之检查点及SCN深入研究
- mysql search yum_mysql安装-yum方式
- 宝塔 没有找到站点_宝塔面板正确开启TLS 1.3并删除TLS 1.1
- leetcode 1030. 距离顺序排列矩阵单元格(bfs)
- 智能解析php源码,PHP源码:XyPlayer在线影视v3.8二次智能解析源码
- vue 样式绑定 class
- Python编程中一定要注意的那些“坑”(二)
- 如何制作一款HTML5 RPG游戏引擎——第五篇,人物人物特效
- fail树(bzoj 3172: [Tjoi2013]单词)
- TcpTrace实现的基本原理
- Linux下产生coredump并压缩保存
- 只能用光盘启动怎么办?
- 蚂蚁财富号:大、小型基金公司的电商业务对比
- Stata:图示交互效应-调节效应
- Zabbix安装错误解决方案
- 客户端到服务器端的通信过程及原理(由浅入深,轻松理解)
- 一文搞懂字符编码问题,从此告别中文乱码
- matlab做飞机气动加热,MATLAB在航空航天器飞行仿真中的应用.pdf
- 电子班牌系统服务器,电子班牌系统解决方案
热门文章
- 42 CO配置-控制-产品成本控制-成本对象控制-实际成本核算/物料分类帐-激活实际成本核算
- mysql binlog查看工具_【使用 Rust 写 Parser】4. 解析 binlog
- 数字电路实验怎么接线视频讲解_利达:气体灭火接线示意图
- opencv计算物体姿态旋转_物体的三维识别与6D位姿估计:PPF系列论文介绍(五)...
- dart string 转 bool_Dart语法篇之集合操作符函数与源码分析(三)
- Python更换清华的源
- android app源码大全_Android秋招秘籍,看我如何搞定BAT,Vivo,爱奇艺
- 免费开源B2C电商系统:(ShopXO无需授权,即可商用)- 入门篇
- bootstrapV4.6.0之flex布局与float布局:对比
- android的app语言无法切换,Android应用实现多语言切换