爬取图片

  • 基本流程:
  • 代码如下:

基本流程:

初始化要爬取的内容,然后使用requests模块进行爬取,使用xpath进行匹配,最后再将图片和详情存入文件夹里面

代码如下:

import requests
import re
import time
import random
import lxml.etree
from lxml.html import tostring
from lxml import etree"""初始化参数"""
kw = '篮球'
base_url = 'http://tieba.baidu.com/f'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36 Edg/90.0.818.46"}
page_num = 1  # 爬取页数
title = ''
path = 'E:\\作业图片\\spider\\'def parse_text(url, params=None):"""发送请求,获取响应内容"""# 休眠,避免被对方反爬检测到time.sleep(random.randint(1, 5))req = requests.get(url, headers=headers, params=params)return req.textdef parse_byte(url, params=None):"""发送请求,获取响应内容"""time.sleep(random.random() * 2)req = requests.get(url, headers=headers, params=params)return req.contentdef page(content, page_num=1):"""解析每一页"""print('第{}页爬取中...'.format(page_num))page_num += 1# 这一句就是为了把每个超链接匹配出来url_title = re.findall(r'<a rel="noreferrer" href="(/p/\d+?)" title=".+?" target="_blank" class="j_th_tit ">(.+?)</a>', content)## html_get = etree.HTML(content)# div_ok = html_get.xpath('//div[@id="mw-content-text"]')[0]# div_content = tostring(div_ok).decode('utf-8')url_title1 = lxml.etree.HTML(content)url_title2 = url_title1.xpath('//*[@id="thread_list"]/li/div/div[2]/div[1]/div[1]/a')# '//*[@id="thread_list"]/li[3]/div/div[2]/div[1]/div[1]/a'# '//*[@id="thread_list"]/li[5]/div/div[2]/div[1]/div[1]/a'# '//*[@id="thread_list"]/li[10]/div/div[2]/div[1]/div[1]/a'# '//*[@id="thread_list"]/li[4]/div/div[2]/div[1]/div[1]/a'# '//*[@id="thread_list"]/li[6]/div/div[2]/div[1]/div[1]/a'for i in url_title2:print(i)for url, title in url_title:# 去掉非中文title = re.sub('[^\u4e00-\u9fa5]+', '', title)# 细节处理:其实就是保存每个帖子的图片detail('https://tieba.baidu.com' + url, title)# 保存标题save_title(title)# 判断下一页next_url = re.findall(r'<a href="(.*?)" .*?>下一页&gt;</a>', content)if next_url:next_url = 'https:' + next_url[0]content = parse_text(url=next_url)page(content, page_num)else:print('爬虫结束...')def detail(url, title):"""每一个帖子的详情"""content = parse_text(url=url)urls = re.findall(r'<img class="BDE_Image".*?src="(.*?)".*?>', content)for url in urls:save_img(url, title)def save_title(title):"""保存帖子的标题"""with open(path + 'tieba\\tieba_{}.txt'.format(kw), 'a', encoding='utf-8') as file:file.write(title)file.write('\n')def save_img(url, title):"""保存图片"""content = parse_byte(url=url)image_path = path + 'tieba\\images\\{}_{}'.format(title, url[-30:])with open(image_path, 'wb') as file:file.write(content)print('爬虫开始...')
content = parse_text(url=base_url, params={'kw': kw, 'ie': 'utf-8', 'fr': 'search'})
page(content)

若想爬取其他的内容,需要将xpath进行修改,以及kw赋值为你想爬取的商品,并确保电脑的目录存在方可成功

爬虫实现百度贴吧的图片爬取相关推荐

  1. Python爬虫之scrapy框架360全网图片爬取

    Python爬虫之scrapy框架360全网图片爬取 在这里先祝贺大家程序员节快乐,在此我也有一个好消息送给大家,本人已开通了微信公众号,我会把资源放在公众号上,还请大家小手动一动,关注过微信公众号, ...

  2. 数据分析与爬虫实战视频——学习笔记(一)(python基础、urllib、超时设置、自动模拟HTTP请求、异常处理、浏览器伪装、代理服务器、新闻爬虫、淘宝登陆和图片爬取)

    未经允许,请勿转载. 连载未完成状态 网址: [数据挖掘]2019年最新python3 数据分析与爬虫实战_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili ...

  3. python爬虫破解百度文库_用Python爬取百度文库0下载券的免费文档详细步骤,附可执行软件...

    [Python] 纯文本查看 复制代码from urllib import parse import requests import webbrowser from pyquery import Py ...

  4. Python爬虫:运用多线程、IP代理模块爬取百度图片上小姐姐的图片

    Python爬虫:运用多线程.IP代理模块爬取百度图片上小姐姐的图片 1.爬取输入类型的图片数量(用于给用户提示) 使用过百度图片的读者会发现,在搜索栏上输入关键词之后,会显示出搜索的结果,小编想大多 ...

  5. 爬虫——百度图片爬取

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用网络爬虫:是捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分,是从互联网中搜集网页.采集信 ...

  6. java spring+mybatis整合实现爬虫之《今日头条》搞笑动态图片爬取

    java spring+mybatis整合实现爬虫之<今日头条>搞笑动态图片爬取(详细) 原文地址原博客地址 先上效果图 抓取的动态图: 数据库: 一.此爬虫介绍 今日头条本身就是做爬虫的 ...

  7. Python爬虫实例(2)-用BeautifulSoup爬取一个网页上的多张照片(以百度贴吧为例)

    上一篇博客,实现了下载一张图片的简单爬虫.但是其代码,仅仅能下载一张图片.爬虫作为数据分析的第一步工作,需要爬取的是海量数据:假设我想下载一个网站几十张图片,那怎么实现呢? 首先,我们利用框图或者伪代 ...

  8. 「Python爬虫系列讲解」十二、基于图片爬取的 Selenium 爬虫

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  9. Python 百度图片爬取

    Python 百度图片爬取 还在为图片不够,一张张点下载发愁吗,这次我们图片一次爬到够! 这次的代码还是很常规的,只是链接的获取要有些技巧,直接代码解说. """这次从逻 ...

最新文章

  1. Java:放心(或非常容易)
  2. 计算机网络 实验教案,《计算机网络》实验教案.pdf
  3. C++:13---多态和虚函数表
  4. 360断网急救箱_万事不求人,教你自己动手修复网络断网
  5. 文件上传下载——sz和rz
  6. Activity生命周期详解一
  7. win8.1安装马上6,连不上
  8. 21岁雅虎卖身引发一波怀旧 市值曾高达1250亿美元
  9. 基于STM32设计的车库监控报警系统
  10. 记者调查:害死多条人命的校园贷卷土重来 支付机构金运通牵涉其中
  11. JarvisOJ 逆向Writeup
  12. 转:MySQL 的 my.cnf 文件(解决 5.7.18 下没有 my-default.cnf )
  13. FAT学习笔记(四)——Dir Entry
  14. 找个免费的天气预报API真难a
  15. 【数据库】一篇文章搞掂:Oracle数据库
  16. Cubist Artwork
  17. 一位沪漂 11 年的程序员老兵,回老家了!
  18. [oeasy]python0072_修改字体前景颜色_foreground_color_font
  19. Verticle in Vert.x
  20. 思岚科技机器人底盘价格揭秘

热门文章

  1. mangabz漫画网鬼灭之刃漫画爬虫
  2. Linux的公平调度
  3. 解决mac端VLC媒体库拖入具有多个文件的N多视频后就会卡死,或者cpu占用颇高的问题
  4. 巡云轻论坛系统 2.3 发布,新增话题收藏功能
  5. 系统服务(daemons)
  6. ORACLE 取唯一数据
  7. 简单视频会议软件_简单而免费的视频会议
  8. 原生js获取html元素属性,JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)...
  9. 寻回失落的“纸人李”——四川大学团队用3D技术平台重现传统纸人工艺
  10. Win10关闭不需要的应用