[python爬虫]利用urllib2爬取百度贴吧帖子相关内容
来源:互联网 发布:散打软件 编辑:程序博客网 时间:2024/06/07 00:01
版本号:Python2.7.5,
所谓爬虫就是把指定网页中的指定类型内容通过程序抓取并保存到本地。
工具
- **google chrome**- **fiddler**
步骤
打开指定帖吧
打开fiddler
将代理跳到fiddler,选中fiddler0626
此时当前页面会刷新,我们到fiddler去看抓包情况
此时我们双击序号一的链接,inspectors下的raw显示了此链接的请求信息,下面的raw则显示了此网页的抓取到的信息,是html类型显示
抓取到信息时,知道这是一个get请求,我们对报头(inspectors下的raw)进行删减(下图蓝色部分),在composer下raw点击executo测试看数据是否有变化
对上图蓝色部分进行删除,点击executo,在左侧查看请求情况
result等于200 代表请求成功,这样多次删除发现,只留下get 请求依然可以请求数据成功,所以我们只保留get 请求链接,并复制其中的http链接
打开一个新建一个 tieba.py 文件
#coding=UTF-8import urllib2 **#导入相应库与函数**import urllibimport jsonfrom lxml import etreeimport chardetitem={} **#新建一个字典**output = open('baidutb.json','w') **#打开一个json文件**num = int(raw_input('请输入你要爬取的页数:'))i = 1while i<=num: #进入循环读取每页的帖子 request = urllib2.Request('http://tieba.baidu.com/f?kw=%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB&ie=utf-8&pn='+str((i-1)*50)+'') **#由于pn后面的值控制着每页的链接,所以对pn= 后面加上不同的字符串数字,因为页数链接pn=后面都是50的倍数所以每次进行翻倍** response = urllib2.urlopen(request) #请求链接 resHtml = response.read().decode('utf-8') html = etree.HTML(resHtml) result = html.xpath('//li[@class=" j_thread_list clearfix"]') **#在html中运用xpath寻找相应标签,即每个li[@class=" j_thread_list clearfix]类型的标签都是相应帖子的源代码** print type(result) b=0 for site in result: **#循环遍历这一页中每个帖子的源码** b+=1 item['data-field'] = site.attrib['data-field'].strip() item['replay'] = site.xpath('./div/div[1]/span')[0].text.strip() **#得到此贴的回复数** print item['replay'] item['title'] = site.xpath('./div/div[2]/div[1]/div[1]/a')[0].text.strip() **#得到此贴的标题** item['author_name'] = site.xpath('./div/div[2]/div[1]/div[2]/span')[0].attrib['title'].strip() **#得到此贴的作者名** item['words'] = site.xpath('.//div[@class="threadlist_abs threadlist_abs_onlyline "]')[0].text.strip() **#得到一楼内容** item['replayer'] = site.xpath('.//span[@class="tb_icon_author_rely j_replyer"]')[0].attrib['title'].strip() **#得到最后回复人名称** item['replaytime'] =site.xpath('.//span[@class="threadlist_reply_date pull_right j_reply_data"]')[0].text.strip() **#得到组后回复时间** line = json.dumps(item,ensure_ascii=False)+ '\n' output.write('第'+str(i)+'页 第'+str(b)+'贴-------------------- ') output.write(line.encode('utf-8')) i+=1output.close()
此时与tieba.py同目录的文件夹下应该有baidutb.json文件,里面数据就是当前贴吧帖子
response = urllib2.urlopen(request) #请求链接
这三行代码就是打开链接并把链接下的所有源代码放到变量html里面。那么我们是怎么从html里找到想要的信息的呢?
resHtml = response.read().decode('utf-8')
html = etree.HTML(resHtml)
我们先打开谷歌的xpath插件,
然后右击任意帖子标题选中检查,得到当前帖子html代码块,是一个li 标签下的a标签,并且a标签所在的li标签就代表当前检查的帖子
那么我们在xpath下根据xpth语法找到所有这种标签即找到并选中了所有当前页的帖子
那么 result = html.xpath('//li[@class=" j_thread_list clearfix"]')
就是把所有这种标签放到result列表里,同样就可以便利标签并用xpath找到标签里想要的信息
- [python爬虫]利用urllib2爬取百度贴吧帖子相关内容
- Python爬虫实战之爬取百度贴吧帖子
- python爬虫小项目: 爬取百度贴吧帖子
- python爬虫(13)爬取百度贴吧帖子
- Python爬取百度贴吧帖子
- python 爬取百度贴吧 帖子
- Python爬虫实战二之爬取百度贴吧帖子
- python学习笔记之爬虫之爬取百度贴吧某一帖子
- python爬虫学习笔记2——百度贴吧帖子爬取
- 简单的python爬虫程序(爬取百度贴吧帖子)
- Python爬虫实战二之爬取百度贴吧帖子
- Python爬虫实战二之爬取百度贴吧帖子
- python爬虫实战二之爬取百度贴吧帖子
- Python爬虫-爬取百度贴吧的帖子并写入文件
- Python3 简单爬虫爬取百度贴吧帖子
- 如何利用python爬虫技术将百度贴吧上面的帖子名称爬取下来
- Python爬虫实战:百度贴吧帖子
- python爬虫-爬取股票贴吧帖子
- android studio 单元测试
- JavaWeb会话Session知识大纲
- 关于emoji表情数据库处理方案 iOS 新手笔记
- iOS 使用纯代码或xib创建圆角视图
- Android 实现应用下载并在通知栏展示进度通知 打开APK文件
- [python爬虫]利用urllib2爬取百度贴吧帖子相关内容
- 程序员面试(c++)——预处理,const与sizeof总结
- 二维码在线生成工具
- 分布式内存文件系统Tachyon介绍及安装部署
- video.js使用教程API
- Android各国语言Values文件夹命名规则
- maven实战——pom文件解析
- UICollectionView实现头部漂浮的效果
- windows下远程线程注入的一个小实例