python爬虫获取贴吧图片

    我的环境是ubuntu 1.8+自带的python3.6+pycharm。
学了python就想做点东西,正好拿爬虫练手,当你看到贴吧上的色图,啊呸!美图的时候是不是想保存?
这个就是效率最大化的工具,全自动色图保存器。
总的来说基本功能是实现了,但能改进的地方比较多,例如输入吧名代替写死的吧名,现在只能抓取第一页,可改为输入页数范围,
现在抓取没有限制频率,太猛容易被封IP,还没实现模拟登录,多线程抓取等。这些坑等以后有空再填了。


import requests
import os
from lxml import etree
class tieba:
url = 'http://tieba.baidu.com/f?kw=%E7%A2%A7%E8%93%9D%E8%88%AA%E7%BA%BF&pn=0'
url_sub='https://tieba.baidu.com'
header = {"User-Agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0"}
img_name = 1
img_huaji='.png'
img_link = []
img_filter=[]

def my_reque(self,url):
respon=requests.get(url,headers=self.header)
html=respon.text.replace(r'<!--','').replace(r'-->','')
tree = etree.HTML(html)
return tree

def save_img(self,list_):
print('过滤后的连接:'+str(list_))
for a in list_:
print('正在保存图片%s.jpg' %str(self.img_name))
print('图片连接为:'+str(a))
images = requests.get(a,headers=self.header)
with open("./img/" + str(self.img_name) +".jpg", "wb") as f:
f.write(images.content)
print('save img success:'+str(self.img_name)+'.jpg')
self.img_name+=1

def filter(self,lists):
print('进入filter,正在过滤图片连接,请稍候')
self.img_link=[]
for i in lists:
if self.img_huaji in i:
continue
else:
self.img_link.append(i)
return self.img_link

def start(self):
#打开碧蓝航线吧首页,抓取所有帖子的后缀,贴吧默认一页为50条数据
tree=self.my_reque(self.url)
lis=tree.xpath('//div[@class="threadlist_lz clearfix"]/div/a[@rel="noreferrer"]/@href')
print('获取到的帖子后缀是:'+str(lis))
self.img_filter=[]
for li in lis:
#根据后缀拼出完整连接,然后请求连接(相当于点击进入一个帖子)
li=self.url_sub+str(li)
print('打开连接:'+li)
sub_page=self.my_reque(li)
#获取这个到帖子的所有图片,后面过滤,把滑稽这种.png的过滤
img_links=sub_page.xpath('//div[@class="d_post_content_main d_post_content_firstfloor"]//img/@src')
print('获取到的帖子图片连接是:' + str(img_links))
self.img_filter=self.filter(img_links)
self.save_img(self.img_filter)

if __name__ == '__main__':
#首先创建爬虫对象
mySpider = tieba()
#调用爬虫对象的方法,开始工作
mySpider.start()

猜你喜欢

转载自www.cnblogs.com/newbee-yun/p/12112951.html