Python爬虫__爬取贴吧图片和文本
来源:互联网 发布:联想淘宝商城旗舰店 编辑:程序博客网 时间:2024/04/30 05:27
1. 爬取图片
1.1 前言
这是一个李清照吧http://tieba.baidu.com/p/3825973883
里面有楼主上传的书法作品,每一楼的格式大致是这样,文本加上书法图片:
我当年年少,还不知道爬虫这个东西,又想把书法图片保存下来,于是一张张地把图片另存为,现在用爬虫来爬取每一楼的书法图片,解放一下人力:
1.2 爬取图片的流程可以总结如下:
1)爬取网页的html代码;
2)提取其中的图片url;
3)下载图片到本地。
1.3 代码
#coding:utf-8#---------------------------------#Created by linxiaobai 2016/09/19#爬取百度贴吧图片#---------------------------------import urllib2import urllibimport re#打开贴吧的htmlurl="http://tieba.baidu.com/p/3825973883"response=urllib2.urlopen(url)html=response.read()#提取其中所有的图片url(使用正则)reg=r'src="(http://imgsrc.*?\.jpg)"'imgre=re.compile(reg)imlist=re.findall(reg,html)#下载图片到本地cnt=1for imurl in imlist: print cnt print imurl urllib.urlretrieve(imurl,"%s.jpg"%cnt); cnt+=1
1.4 爬取结果:
2. 爬取文本
2.1 前言
http://tieba.baidu.com/p/584926093
此楼的标题是“谁来说说李清照和纳兰容若这两人”,大致就是粉丝对两位词人的比较,比较有意思的是,吧主怕易安粉和容若粉打起来,还特意出来声明“我早就说过禁止对词人进行比较”云云……
我们要做的工作就是把每一楼发表的文本提取出来。
2.2 html格式分析
这是楼主发表的文本,html格式如下,并且其他各楼的格式也都与此一致:
可以看到每一楼的文本内容都是位于一个div中,而div的classs属性是唯一的,因此,可以利用class属性定位到文本的div。
res=soup.find_all('div',class_="d_post_content j_d_post_content ")
进一步,可以使用get_text()函数获取div中的文本。
2.3 步骤梳理
综上,可以总结出如下步骤:
1)爬取贴吧html内容;
2)获取文本所在的div(使用BeautifulSoup);
3)获取div中的文本
2.4 代码
#coding:utf-8#---------------------------------#Created by linxiaobai 2016/09/21#爬取百度贴吧的文本内容#---------------------------------import urllib2import refrom bs4 import BeautifulSoupimport urlparse#修改编码import sysreload(sys)sys.setdefaultencoding('utf-8')#1)爬取贴吧html内容html_con=urllib2.urlopen("http://tieba.baidu.com/p/584926093").read()#2)获取文本所在的div(使用BeautifulSoup);soup=BeautifulSoup(html_con,'html.parser',from_encoding='utf-8')res=soup.find_all('div',class_="d_post_content j_d_post_content ")#写入文件,写入的标签纯属格式需要,可以忽略fout=open("lqz.html",'w')fout.write("<html>")fout.write("<head>")fout.write("<meta charset='utf-8'/>")fout.write("<body>")for post in res: fout.write("<p>") fout.write(post.get_text())#3)获取到div标签下的文本内容 fout.write("</p><br/>")fout.write("</body>")fout.write("</head>")fout.write("</html>")
2.5 爬取结果
寻找一下吧主害怕民众打架,发出的警告:
2.6 代码优化
其实也谈不上优化,因为还没有化成oo形式,只是缩短了代码的长度,另外,增加爬取用户名字,结果输出到列表中。
#coding:utf-8#---------------------------------#Created by linxiaobai 2016/09/21#爬取百度贴吧的文本内容#增加爬取用户名#---------------------------------import urllib2import refrom bs4 import BeautifulSoupimport urlparse#修改编码import sysreload(sys)sys.setdefaultencoding('utf-8')#1)爬取贴吧html内容html_con=urllib2.urlopen("http://tieba.baidu.com/p/584926093").read()#2)获取文本所在的div(使用BeautifulSoup);soup=BeautifulSoup(html_con,'html.parser',from_encoding='utf-8')res_name=soup.find_all('li',class_="d_name")res_post=soup.find_all('div',class_='d_post_content j_d_post_content ')#写入文件,写入的标签纯属格式需要,可以忽略fout=open("lqz.html",'w')fout.write("<html><head><meta charset='utf-8'/><body><table>")cnt=1for i in range(len(res_name)): fout.write("<tr>") fout.write("<td>%s</td>"%str(cnt)) fout.write("<td>%s</td>"%res_name[i].get_text()) fout.write("<td>%s</td>"%res_post[i].get_text())#3)获取到div标签下的文本内容 fout.write("</tr>") cnt+=1fout.write("<table></body></head></html>")
输出结果。每一行的内容,从左到右依次是:序号,用户名,用户发表的文本:
2 0
- Python爬虫__爬取贴吧图片和文本
- Python 3基础教程37-tkinter添加图片和文本
- [Python爬虫]爬取贴吧图片
- 用Python 爬虫爬取贴吧图片
- 华丽的图片和文本装饰
- MFC实现工具栏插入图片和文本
- 怎么混合显示图片和文本
- cxGrid单元格内显示图片和文本
- Android自定义圆形图片和文本
- Android 自定义圆形图片和文本
- 图片和文本实现的数据隐藏
- ListView用SimpleAdapter显示图片和文本
- python cookbook:第二章 字符串和文本
- Python 网络抓取和文本挖掘
- python汉语正则处理和文本读写
- python 爬取排行榜小说和文本
- 用R语言做网页爬虫和文本分析1
- Python爬虫入门——爬取贴吧图片
- C# socket主动给指定客户端发送数据的方法
- TextView属性大全
- 解决android6.0系统无法读写SD的问题
- hdu5886Tower Defence(树形dp)
- OC中一般正则表达式的使用
- Python爬虫__爬取贴吧图片和文本
- 用QMatrix实现帧的旋转、翻转、放大、缩小等简单操作示例
- 奇异值分解和图像压缩
- 防坠落智能小车
- A Review of Lectures, labs, papers and Conferences about Reinforcement Learning
- C++函数重定义、重载、重写
- VS2012连接到osc@git
- POJ 3697USTC campus network
- Tomcat升级JDK