爬取百度贴吧图片

百度贴吧地址:

  1. 以‘’校花吧‘’举例
  2. https://tieba.baidu.com/f?kw=%D0%A3%BB%A8&fr=ala0&tpl=5
    你打开的校花吧的地址可能是这个样子的,
    注意看url中的参数
    kw:代表的是你进入贴吧的名字
    其他的都没有用,可以都删除(删除之后可照常访问)
    https://tieba.baidu.com/f?kw=%D0%A3%BB%A8
    PS:
    这里需要注意:其实你把kw的值改成中文:校花
    照常也正常访问
    地址为https://tieba.baidu.com/f?kw=校花
    为什么都能访问呢?
    答:是因为url地址是自动将中文做了编码而已

**

途中就是我们最终要爬取的图片
**

分析:看到后不难发现当前这个网页里虽然有图片,但是图片仅有页面展示的这几张,其实发表的每个贴吧的标题里面点进去,会有很多评论者发表的图片,里面这些我们看不到。
结论:想要爬取的全面一些,我们就要爬到每个标题里面的所有的图片。这样就需要请求每个标题的url网址,从里面再进行爬取所有的图片

爬取思路

  1. 第一步:爬取第一个url网页中的所有的标题的url地址
  2. 第二部:分别从每个url中再进行爬取里面的图片
# -*- coding: utf-8 -*-
# @Author  : Mr.Cao
# @Time    : 2021/4/6 14:30
# @Function:
import requests
import re
import randomclass BaiDuTieBa:def __init__(self):self.url = 'https://tieba.baidu.com/f?'self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/88.0.4324.150 Safari/537.36 '}self.params = {}# 接受请求def response_html(self, url, params):response_html = requests.get(url, params=params, headers=self.headers)response_html.encoding = 'utf-8'response_html = response_html.text# print(response_html)return response_html# 分析解析主贴吧网页的请求def parse_html(self, res):list_href = re.compile('<div class="threadlist_title pull_left j_th_tit ">.*?href="(.*?)"', re.S)list_href = list_href.findall(res)return list_href# 分析解析每个标题请求def parse_picture(self, res):list_src = re.compile('<img class="BDE_Image" src="(.*?)"', re.S)list_src = list_src.findall(res)print(list_src)return list_src# 写入文件夹def write_page(self, content):img_name = str(int(random.random() * 100000)) + '.jpg'with open(img_name, 'wb') as f:f.write(content)print("{}下载完毕".format(img_name))# 运行函数def work(self):params = input("请输入要爬取的贴吧名字:")pn = input("请输入要爬取的页数:")self.params['kw'] = params# 按页爬取图片for i in range(0, int(pn)):page_num = i * 50self.params['pn'] = page_numprint(self.params)res = self.response_html(self.url, self.params)href_list = self.parse_html(res)print("爬取到的第{}页的标题href".format(i + 1), href_list)url_base_picture = "https://tieba.baidu.com"for href in href_list:url_picture = url_base_picture + hrefprint("开始爬取标题网址为:{}".format(url_picture))res_picture = requests.get(url_picture, headers=self.headers)res_picture.encoding='utf-8'src_list = self.parse_picture(res_picture.text)for src in src_list:res_src = requests.get(src, headers=self.headers)picture_content = res_src.contentself.write_page(picture_content)print("第{}页爬取成功".format(i + 1))if __name__ == '__main__':baiduTieBa = BaiDuTieBa()baiduTieBa.work()

运行之后输入你想爬取的贴吧的名字

以pycharm作为IDE举例


开始爬取了:

等着爬取完就好了,,,简单的小爬虫就做好了。后期考虑做一下多线程的,因为这个爬取太慢了。太耗时间,如果要爬取100多页的话,需要等很长时间。之后用redis做一个多线程爬虫,敬请期待!!!

爬取百度贴吧图片-python-requests相关推荐

  1. python爬虫爬取百度贴吧图片,requests方法

    每天一点点,记录学习 近期爬虫项目,看完请点赞哦---: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:python爬虫爬取百度贴吧图片,requests方 ...

  2. python爬取百度搜索_使用Python + requests爬取百度搜索页面

    想学一下怎样用python爬取百度搜索页面,因为是第一次接触爬虫,遇到一些问题,把解决过程与大家分享一下 1.使用requests爬取网页 首先爬取百度主页www.baidu.com import r ...

  3. python爬取汽车之家图片,Python requests 爬取汽车之家全部品牌logo,urllib下载到本地...

    首先是汽车之家品牌页面的HTML 我们定位到图片那个位置,这个img标签的src加上https就是图片完整的地址 那么品牌名称就是下面那个p标签的text 接下来我们的目的就是从中取出src和text ...

  4. python爬取贴吧所有帖子-Python实现的爬取百度贴吧图片功能完整示例

    本文实例讲述了Python实现的爬取百度贴吧图片功能.分享给大家供大家参考,具体如下: #coding:utf-8 import requests import urllib2 import urll ...

  5. python爬取帖吧图片实验报告,Python爬取百度贴吧图片

    原标题:Python爬取百度贴吧图片 作者:MTbaby 来源:http://blog.csdn.net/mtbaby/article/details/70209729 描述:用Python爬去百度贴 ...

  6. 测试爬虫 爬取百度贴吧 爬取百度搜图图片

    测试爬取百度贴吧图片 定义爬取百度斗图吧首页的每条贴子的URL的爬取规则对象 /*** 斗图吧贴子的url*/SpiderFunction<Set<String>> doutu ...

  7. 入门级别的Python爬虫代码 爬取百度上的图片

    简单讲解下python爬取百度图片的方法还有一些小坑(ps:我是搞.net的所以python只是新手讲错勿怪,注意:系统是windows下的) 首先讲下对百度图片上请求的分析:这里我引用下别人的博客, ...

  8. Python爬虫,爬取百度贴吧图片和视频文件,xpath+lxml,访问被拒的原因分析

    目录 百度贴吧图片和视频文件爬取程序 1.需求分析 2.url分析 3.Xpath分析 4.程序设计 5.坑点 百度贴吧图片和视频文件爬取程序 1.需求分析 进入百度贴吧,搜索周杰伦,进入周杰伦吧.我 ...

  9. python爬取百度贴吧xpath_爬虫基础系列xpath实战——爬取百度贴吧图片(3)

    8586231_192932724000_2.jpg #百度贴吧图片爬虫 # 爬取步骤:1.基础设置,2.构造url,3.爬取页面,4.解析页面,5.保存页面 # 采取urllib爬取 #引入必要的包 ...

最新文章

  1. DRV8834用于驱动双电机
  2. 想开网店?向你推荐最好的开源电子商务平台
  3. 职高计算机专业可以考本科吗,职业高中和普通高中的区别 职业高中能考本科吗...
  4. Ruby on Rails 實戰聖經阅读(三)
  5. 左神算法:生成窗口最大值数组(Java版)
  6. User status profile field in WebUI
  7. ubuntu18.04虚拟机突然连不上网
  8. 获取本地ip(一个或多个都能取)
  9. 自然语言处理——用逻辑回归来实现情绪识别
  10. ubuntu录制屏幕傻瓜操作 ubuntu screen capture
  11. Taro小程序 Input组件focus属性失效解决方案
  12. 数据结构学习——RBT(红黑树)以及实现Map和Set
  13. win7如何安装无线网卡驱动程序?具体安装步骤
  14. Android开发唯一的出路:进阶学习,附超全教程文档
  15. Python亲戚计算器
  16. 【vultr使用流程笔记】
  17. 这些年我们错过了什么
  18. python plot坐标轴显示比例一致,Matplotlib-固定x轴比例和自动缩放y轴
  19. bilibili视频下载信息获取
  20. Jsp页面 实现删除修改

热门文章

  1. 直播 相关技术文章 相关调研文章
  2. 哪些道理是过了40岁之后才明白的?
  3. 计算机考试前的心情作文,考试前的准备中考优秀作文(精选7篇)
  4. Android实现电量控制降低耗电
  5. 微信向支付宝转账或将成为可能
  6. 【转】ArcGIS server如何将自己的小地图叠加到Google maps或者Virtual Earth上
  7. Hibernate Criteria对象详解(条件查询)
  8. Python数据处理之一:数据读取
  9. 滴滴出行app——网约车出行的背后(上)
  10. The ETH-MAV Team in the MBZ International Robotics Challenge