python爬取百度贴吧图片

# -*- 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()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值