百度贴吧图片爬取

该博客介绍了如何使用Python爬取百度贴吧特定主题的图片。作者通过分析URL参数规律,构建请求链接,并利用正则表达式提取图片URL,最终实现图片的下载。在过程中,强调了查看网页源码和网络请求的重要性,以及对URL变化规律的理解。
# @ Time : 2021/2/23 23:11
# @ Author : Ellen
'''
百度贴吧图片爬取
需求:爬取一个贴吧主题的图片
思路:找到这个(些)图片的url然后保存图片
1分析页面
找到了图片的url地址 但是发现源码中并没有
一种是通过 network分析数据接口
另一种是通过selenlum进行模拟爬取数据(后面再学习)
'''


'''
url1 = 'https://tieba.baidu.com/photo/g/bw/picture/list?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&alt=jview&rn=200&tid=1934517161&pn=1&ps=1&pe=40&info=1&_=1614146358652'

url2 = 'https://tieba.baidu.com/photo/g/bw/picture/list?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&alt=jview&rn=200&tid=1934517161&pn=1&ps=40&pe=79&wall_type=h&_=1614146477252'

url3 = 'https://tieba.baidu.com/photo/g/bw/picture/list?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&alt=jview&rn=200&tid=1934517161&pn=1&ps=79&pe=118&wall_type=h&_=1614146479833'

分析后得到:ps分别为:  1  40 79   
          :pe分别为: 40  79  118  通过规律发现数据之前相差39

三次相同url部分:'https://tieba.baidu.com/photo/g/bw/picture/list?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&alt=jview&rn=200&tid=1934517161&pn=1'

'''
import requests
import re
import time
name = 1

for i in range(1, 80, 39):
    url = 'https://tieba.baidu.com/photo/g/bw/picture/list?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&alt=jview&rn=200&tid=1934517161&pn=1' + '&ps=' + str(i) + '&pe=' + str(39 + i) + '&wall_type=h&_=1614146479833'

    headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'
    }

    res = requests.get(url, headers=headers)
    # print(res.text)’
    img_urls = re.findall('"murl":"(.*?)"', res.text)
    for img_url in img_urls:
        # print(img_url)
        img_response = requests.get(img_url)
        # 保存数据
        with open('img/%d.jpg' %name, 'wb')as file_obj:
            time.sleep(0.5)
            file_obj.write(img_response.content)
            print('正在下载第%d张图片' %name)
            name += 1

# 通过这个案例当中我们的总结:
# 1 看这个数据是否在源码当中 如果在直接请求去解析 如果不在到network中分析
# 2 url规律的总结 要看出它的规律并寻求解决
# for i in range(1,80, 39):
#     print(i)
# 图片的名字
# 定义了一个变量 然后在循环中不断的让这个变量的值增加1

# 正则表达式 img_urls = re.findall('"murl":"(.*?)"', res.text)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值