# -*- coding: utf-8 -*-
import requests
from lxml import etree
# &pn=50
class Ximage:
def __init__(self):
self.baseurl = "http://tieba.baidu.com/f?kw="
# 定义主页url头部信息
self.tiebaurl = "http://tieba.baidu.com"
# 定义贴吧主页url头部信息
self.headers={"User-Agent":"Mozilla5.0/"}
self.page=0
# 图片个数统计
self.n=1
# 主页url拼接用
def getHtml(self,url):
# 获取网页内容
res = requests.get(url,headers=self.headers)
res.encoding = "utf-8"
html = res.text
return html
def getImg(self,url):
# 获取图片字节流
res = requests.get(url,headers=self.headers)
res.encoding = "utf-8"
html = res.content
return html
def getBaseUrl(self,html):
# 获取吧主 url,返回url列表
parseHtml=etree.HTML(html)
url_list = parseHtml.xpath('//div[@class="t_con cleafix"]//a[@class="j_th_tit "]/@href')
return url_list
def getImgUrl(self,html):
# 获取吧主图片url,返回url列表
parseHtml=etree.HTML(html)
url_list = parseHtml.xpath('//img[@changedsize="true"]/@src')
return url_list
def writePage(self,html,img_url):
# 存储图片
# print(self.n)
# filename=str(self.n)+".jpg"
filename=img_url[-10:]
with open(filename,'wb') as f:
f.write(html)
print("写入第%d个图片成功" %self.n)
f.close()
self.n+=1
def workOn(self):
# 主函数
t_name = input("请输入贴吧名:")
while True:
url=self.baseurl+t_name+"&pn="+str(50*self.page)
# print("贴吧主页:",url)
html=self.getHtml(url) #主页内容
baseurl_list=self.getBaseUrl(html)#吧主url地址列表
for i in baseurl_list:
t_url=self.tiebaurl+i
# print("吧主主页:",t_url)
t_html=self.getHtml(t_url) #吧主网页内容
img_url_list=self.getImgUrl(t_html)#获取吧主网页内容图片url列表
for img_url in img_url_list:
# print("吧主图片链接",img_url)
img_html=self.getImg(img_url)#图片内容字节流
self.writePage(img_html,img_url)#存储图片
print("抓取第一页成功。")
c = input("是否继续抓取y/n:")
if c.strip().lower()=="y":
self.page+=1
else:
print("爬取结束,谢谢使用")
break
if __name__ == "__main__":
x=Ximage()
x.workOn()
python爬取百度贴吧图片
最新推荐文章于 2020-05-22 22:53:40 发布