Python爬取百度贴吧帖子的图片

贴吧:美图吧
帖子:https://tieba.baidu.com/p/5838004691

一、目标
通过Python下载任意百度贴吧帖子的图片并保存到本地。

二、分析网址
第一页
在这里插入图片描述
第二页
在这里插入图片描述
第三页
在这里插入图片描述
我们可以发现:帖子的页数会形成一个很有规律的网址:
https://tieba.baidu.com/p/5838004691?pn=1
最后的数字即页数

三、分析网页
我们点击帖子的图片之后会到达其资源网址:
在这里插入图片描述
可以在打开的资源网址或原帖子去保存图片,但是这个不是我们的目标,我们要自动下载,而不是手动保存。

我们在帖子页面点击F12,Ctrl+F查找Image(图片一般是Image),然后我们回车一个个的看,发现:
在这里插入图片描述
src中的网址右键Open in new tab,打开后是帖子中的图片。

ok,目前为止我们找到了帖子每一页网址的内在规律;找到了帖子中图片的src地址。
然后,我们需要编写程序下载指定帖子的所有图片并保存到本地了。

四、程序代码

'''
@Author: ZoJet
@Date: 2019-06-19 19:00:47
@Version: 
@Content: 
'''

import re, os, requests
from bs4 import BeautifulSoup

# 数据包头
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0',
    'Connection':'keep-alive',
}

s = requests.session()

# 得到图片资源网址
def get_url(text):
    soup = BeautifulSoup(text, 'lxml')
    urls = soup.find_all('img', {'class':'BDE_Image'})
    url = [i.get('src') for i in urls]
    return url

# 保存图片到指定文件夹
def save_img(url):
    img_name = url.strip().split('/')[-1]
    url_re = s.get(url.strip(), headers=headers)
    if url_re.status_code == 200:
        if not os.path.exists('download/tieba_img'):
            os.mkdir('download/tieba_img')
        open('download/tieba_img/' + img_name, 'wb').write(url_re.content)

# 指定帖子网址和下载页数后开始下载
if __name__ == '__main__':
    # https://tieba.baidu.com/p/5838004691?pn=
    tiezi_web = input("请输入帖子第一页的网址:")
    # 38
    page_count = int(input("请输入下载帖子图片的页数:"))
    pic_count = 0
    for i in range(page_count):
        url = tiezi_web + str(i + 1)
        web_content = s.get(url).text
        urls = get_url(web_content)

        for url in urls:
            pic_count += 1
            save_img(url)

    print("下载完毕,总共%d张图" %pic_count)

五、运行结果
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值