百度贴吧图片爬取

# @ 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我是语言模型AI,我无法提供完整的代码,但是我可以提供伪代码: 1. 导入必要的库和模块,如requests、bs4等。 2. 获取贴吧首页的HTML源码。 3. 通过BeautifulSoup解析HTML源码,获取所有帖子的链接。 4. 遍历所有帖子的链接,获取每个帖子的HTML源码。 5. 通过BeautifulSoup解析帖子的HTML源码,获取所有图片的链接。 6. 遍历所有图片的链接,下载图片并保存到本地。 以下是一个简单的伪代码示例: ``` python import requests from bs4 import BeautifulSoup import os # 贴吧主页链接 url = 'https://tieba.baidu.com/f?kw=python' # 获取贴吧首页的HTML源码 response = requests.get(url) html = response.text # 通过BeautifulSoup解析HTML源码,获取所有帖子的链接 soup = BeautifulSoup(html, 'html.parser') links = soup.find_all('a', {'class': 'j_th_tit'}) for link in links: # 获取帖子链接 post_url = 'https://tieba.baidu.com' + link['href'] # 获取帖子的HTML源码 response = requests.get(post_url) html = response.text # 通过BeautifulSoup解析帖子的HTML源码,获取所有图片的链接 soup = BeautifulSoup(html, 'html.parser') imgs = soup.find_all('img', {'class': 'BDE_Image'}) for img in imgs: # 获取图片链接 img_url = img['src'] # 下载图片并保存到本地 response = requests.get(img_url) with open(os.path.join('images', os.path.basename(img_url)), 'wb') as f: f.write(response.content) ``` 注意:该伪代码可能存在错误,仅供参考。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值