运用Python爬取百度贴吧的图片——(中奖贴吧:P站吧)

现在我们要爬取百度贴吧的图片,选择了一个小清新一点的黄吧——P站吧。以这个贴吧为例,大家可以一次为例爬取更多的小黄网啦!
在这里插入图片描述
工具:pycharm,requests库,正则表达式,Python相关知识
直接po代码,注释很全乎的

import requests,re
for page in range(1,3):
    #这个for循环是我们爬取的页数,从第一页开始到第二页结束(不敢爬太多怕封ip)
    url = "https://tieba.baidu.com/f?kw=p%E7%AB%99&ie=utf-8&pn={}".format(page)  #p站每页的url
    header={
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
    }
    #主页cookie
    response = requests.get(url=url,headers=header).content.decode("utf-8")
    #这第一页的HTML
    tiezi = re.compile(r'<li class=" j_thread_list clearfix".*?>(.*?)</li>',re.S)
    tiezi_all = tiezi.findall(response)
    #通过正则表达式得到每个帖子列表的连接,事实证明这一步完全没必要,直接他妈的爬帖子链接不就完了吗
    lianjie = re.compile(r'<a rel=".*?" href="/p/(.*?)".*?>.*?</a>')
    lianjie_list = lianjie.findall(str(tiezi_all))
    #从每个帖子的列表中找到每个帖子的链接

    for j in lianjie_list:      #遍历每一个帖子的链接
        req=requests.get(url='https://tieba.baidu.com/p/'+j,headers=header).content.decode("utf-8")
        #req是每个帖子的html内容
        pic=re.compile(r'<img class="BDE_Image" src="(.*?)".*?>')
        pic_list = pic.findall(req)
        # 得到全部照片的链接:这个链接是多个列表,每一个小列表都是那个帖子下的素有图片的集合
        if pic_list:    #判断该帖子有没有图片,此时帖子有图片时
            for k in pic_list:   #k是当前帖子的那个图片表
                img=requests.get(url=k,headers=header).content
                #这个地方很关键,虽然我们得到了每个图片的链接,但是仍然需要从网页上爬取他的原始链接,这样可以保证是字节流
                # img是每一个图片,这个地方因为图片关系,需要限定图片为字节流:content
                with open('img/{}'.format(k[-10:]),'wb')as tf:
                    #保存图片的地方,k[-10:]是只保存这个图片的后10位,因为图片的字节表示的前面是https://  存在/  系统会错误以为是路径,所以把/去掉,只取后10位
                    tf.write(img)

最后咱得到的结果很丰硕!
在这里插入图片描述
在这里插入图片描述

以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值