python网络爬虫案例:批量爬取百度贴吧页面数据

ByteLuminaX
• 阅读 518

⾸先我们创建⼀个 python⽂件, tiebaSpider.py,我们要完成的是,输⼊⼀个百度贴吧的地址,⽐如:

百度贴吧 LOL 吧第⼀⻚:http://tieba.baidu.com/f?kw=l... 这个是 lol 吧的第⼀⻚的 url 地址,如果打开第⼆⻚,你会发现他的 url 如下: 第⼆⻚: http://tieba.baidu.com/fkw=lo...
第三⻚: http://tieba.baidu.com/f?kw=l...

发现规律了吧,贴吧中每个⻚⾯不同之处,就是 url 最后的 pn 的值,其余的都是⼀样的,我们可以抓住这个规律。

1、简单写⼀个⼩爬⾍程序,来爬取百度 LOL 吧的所有⽹⻚

我们已经之前写出⼀个爬取⼀个⽹⻚的代码。现在,我们可以将它封装成⼀个⼩函数 loadPage,供我们使⽤。

def loadPage(url):
'''
'''
通过 URL 请求爬取到 html 静态⻚⾯源代码
url:需要爬取的 url 地址
req = urllib2.Request(url)
response = urllib2.urlopen(req)
html = response.read()
return html

接下来,我们写⼀个百度贴吧爬⾍接⼝,我们需要传递 3 个参数给这个接⼝, ⼀个是我们要爬取的 url 地址,以及起始⻚码和终⽌⻚码,表示要爬取⻚码的范围。

def tiebaSpider(url, beginPage, endPage):
'''
'''
百度贴吧爬⾍核⼼程序:
url: 要爬取的 url 地址
beginPage: 爬⾍贴吧的起始⻚数
endPage: 爬⾍贴吧的终⽌⻚数
user_agent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1
; Trident/5.0;" # IE9.0 的 User-Agent
headers = {"User-Agent":user_agent}
for i in range(beginPage, endPage+1):
pn = 50 * (i - 1)
html = loadPage(url+str(pn))

最后如果我们希望将爬取到了每⻚的信息存储在本地磁盘上,我们可以简单写⼀个存储⽂件的接⼝。

def writeFile(file_name, text):
'''
'''
将字符串内容写到⽂件中: 
file_name: ⽂件路径
text: 要写进的字符串
print "正在存储⽂件" + file_name
f = open(file_name, 'w+')
f.write(text)
f.close()

ok,接下来就是写⼀个 main 函数吧,然后提示⽤户输⼊即将爬取的百度贴吧 url 地址。 ( 注意 :百度贴吧最后⻚码” pn= “后的数字,这些数字为我们传⼊的⻚码参数,所以我们再提供的时候不能包括数字)

if name == ' main ':
tiebaurl = str(raw_input('请输⼊贴吧的地址, 去掉 pn=后⾯的数字:'))
beginPage = int(raw_input('请输⼊开始的⻚数'))
endPage = int(raw_input('请输⼊结束的⻚数'))
tiebaSpider(tiebaurl, beginPage, endPage)

综上, 全部代码完成。好了,最后我们测试⼀下。

2、爬虫代码测试

运⾏后,输⼊lol 吧的 url 地址 http://tieba.baidu.com/f?kw=l... ( 注意=号后⾯不要加数字,因为我们要⾃动添加 )

Power@PowerMac ~$ python tiebaSpider.py
请输⼊贴吧的地址, 去掉 pn=后⾯的数字: http://tieba.baidu.com/f?kw=lol&i
e=utf-8&pn=
请输⼊开始的⻚数 5 请输⼊结束
的⻚数 10
正在下载第 5 个⽹⻚
正在存储⽂件 5.html 正
在下载第 6 个⽹⻚ 正在
存储⽂件 6.html 正在下
载第 7 个⽹⻚ 正在存储
⽂件 7.html 正在下载第
8 个⽹⻚ 正在存储⽂件
8.html 正在下载第 9 个
⽹⻚ 正在存储⽂件
9.html 正在下载第 10
个⽹⻚ 正在存储⽂件
10.html

3、总结

其实很多⽹站都是这样的,当前⽹址下会有⼏个 html⻚⾯,分别对应⽹址后的⽹⻚序号。
这样⼀个简单的爬⾍程序就可以批量获取⽹站⻚⾯源码,然后我们就可以从中筛选⾃⼰想要的数据信息了。
点击获取全套python爬虫视频教程,从爬虫基础到高级项目实战教程,非常值得零基础的人学习爬虫,理论+项目实践,终成爬虫大神。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Irene181 Irene181
4年前
3000字 “婴儿级” 爬虫图文教学 | 手把手教你用Python爬取 “实习网”!
1\.为"你"而写这篇文章,是专门为那些"刚学习"Python爬虫的朋友,而专门准备的文章。希望你看过这篇文章后,能够清晰的知道整个"爬虫流程"。从而能够"独立自主"的去完成,某个简单网站的数据爬取。好了,咱们就开始整个“爬虫教学”之旅吧!2\.页面分析①你要爬取的网站是什么?首先,我们应该清楚你要爬去的网站是什么?由于这里我们想要
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Karen110 Karen110
4年前
一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频
【一、项目背景】    百度贴吧是全球最大的中文交流平台,你是否跟我一样,有时候看到评论区的图片想下载呢?或者看到一段视频想进行下载呢?今天,小编带大家通过搜索关键字来获取评论区的图片和视频。【二、项目目标】    实现把贴吧获取的图片或视频保存在一个文件。【三、涉及的库和网站】1、网址如下:https://tieba.baidu.com/f?ie
Aimerl0 Aimerl0
4年前
Python网络爬虫与信息提取
title:Python网络爬虫与信息提取date:2020121001:00:23tags:Pythoncategories:学习笔记写在前面不知道写啥其实说实话TOC网络爬虫之规则安装requests库cmd命令行打开输入pip3installrequests,等待即可简单测试,爬一下bkjwpythonimportrequ
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
Python+Selenium自动化篇
本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。0.元素定位方法主要有:id定位:find\_element\_by\_id('')name定位:find\_element\_by\_name('')class定位:find\_element\_by\_class\_name(''
Stella981 Stella981
3年前
Python之scrapy实现的爬虫,百度贴吧的自动签到和自动发帖、自动回帖
百度贴吧Crawler!Travisbranch(https://img.shields.io/travis/rustlang/rust/master.svg)(https://gitee.com/changleibox/TiebaCrawler)实现百度贴吧的自动签到和自动发帖、自动回帖实现Cookies