欢迎大家访问我的个人博客:https://jmbaozi.top/

这个个人博客是我无意中发现的,经过Ping测试服务器应该是在海外,所以传输速度并不理想,为了减轻博主服务器的压力,在本文中进行脱敏处理,如果想要查看网址,可以点击程序或网站自行查看。

根据博客的分类,分成四类来爬取,其中最多的一类照片有2886张,这也是这次爬取中踩坑最多的一类。

共爬取4513张图片,耗时 117min 37sec

以图片最多的一类为例子记录一下。

过程分为:

  • 获取每篇博客的链接
  • 获取博客中每张图片的链接
  • 获取每张图片的二进制信息
  • 保存每张图片

1.获取每篇博客的链接

post_href = []#博客链接
def get_href():for i in range(1,6):#共5页if i==1:link = urlelse:link = url + '/page/' + str(i)    r = requests.get(link,headers=headers)soup = BeautifulSoup(r.text,'lxml')href_list = soup.find_all('h2',class_='entry-title')for each in href_list:href = each.find('a')['href']post_href.append(href)

2.获取博客中每张图片的链接

img_url = []#图片url
def get_imgURL():for href in post_href:r = requests.get(href,headers=headers)test = r.textreg = r'src="(.+?\.jpg)" alt'imgre = re.compile(reg)imgURL = re.findall(imgre,test)#返回的是列表格式img_url.append(imgURL)#元素为列表

其中利用了正则来寻找所有符合条件的url

3.获取每张图片的二进制信息并保存

def get_img():number = 1for url_list in img_url:for url in url_list:headers['User-Agent'] = random.choice(user_agent_list)r = requests.get(url,headers=headers,verify=False)content = r.contentfile_name = dirname + '/' + str(number) + '.jpg'with open(file_name,'wb') as file:file.write(content)print('保存第%d张'% (number))number+=1

踩坑

1.

HTTPSConnectionPool(host='***', port=443)

方法:加上参数verify=False

response = requests.get(url,verify=False)

2.

requests.exceptions.ConnectionError: (‘Connection aborted.’, RemoteDisconnected(‘Remote end closed connection without response’,))

方法:随机切换User-Agent

user_agent_list = ["Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)","Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15",
]
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.62 Safari/537.36 Edg/81.0.416.31','Referer': '***'
}
headers['User-Agent'] = random.choice(user_agent_list)

完整代码

"""
Author:JMbaozi
Total:2886
Take:48min 08sec
"""import requests
import re
import lxml
import random
from bs4 import BeautifulSoupuser_agent_list = ["Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)","Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15",
]
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.62 Safari/537.36 Edg/81.0.416.31','Referer': '***'
}
url = '***'post_href = []#博客链接
img_url = []#图片url
dirname = 'heisiPicture'#获取链接
def get_href():for i in range(1,6):#共5页if i==1:link = urlelse:link = url + '/page/' + str(i)    r = requests.get(link,headers=headers)soup = BeautifulSoup(r.text,'lxml')href_list = soup.find_all('h2',class_='entry-title')for each in href_list:href = each.find('a')['href']post_href.append(href)#获取照片url
def get_imgURL():for href in post_href:r = requests.get(href,headers=headers)test = r.textreg = r'src="(.+?\.jpg)" alt'imgre = re.compile(reg)imgURL = re.findall(imgre,test)#返回的是列表格式img_url.append(imgURL)#元素为列表#获取照片二进制信息并保存
def get_img():number = 1for url_list in img_url:for url in url_list:headers['User-Agent'] = random.choice(user_agent_list)r = requests.get(url,headers=headers,verify=False)content = r.contentfile_name = dirname + '/' + str(number) + '.jpg'with open(file_name,'wb') as file:file.write(content)print('保存第%d张'% (number))number+=1 if __name__ == '__main__':get_href()get_imgURL()get_img()print('保存完成!')

Python爬虫-爬取福利图片踩坑相关推荐

  1. python爬虫,爬取下载图片

    python爬虫,爬取下载图片 分别引入以下三个包 from urllib.request import urlopen from bs4 import BeautifulSoup import re ...

  2. Python爬虫爬取相关图片

    简要的实现实现Python爬虫爬取百度贴吧页面上的图片,下面的网页就是本篇博客所要爬的网页,当然看到的只是其中的一部分图片,是所要爬取的页面, 而下图则是最终的爬取的图片: 接下来就简要的讲讲爬取的整 ...

  3. python爬虫爬取网页图片_Python爬虫:爬取网页图片

    先分析查找要爬取图片的路径 在浏览器F12 审查元素 整体实现代码 # -- coding:UTF-8 -- import requests from bs4 import BeautifulSoup ...

  4. 上手快!!福利局!新手如何使用python爬虫爬取网页图片(使用正则进行数据解析)当然这个新手是我自己

    作为一个python新入门小白,突然就想发个博客,一方面为了记录学习历程,一方面能分享给新入门的同学经验,更多的是想和大家一起学习和交流.以下是我以小白的角度分享的爬虫的相关知识和一个简单的爬取网页图 ...

  5. python爬虫爬取百度图片总结_python爬虫如何批量爬取百度图片

    当我们想要获取百度图片的时候,面对一张张图片,一次次的点击右键下载十分麻烦.python爬虫可以实现批量下载,根据我们下载网站位置.图片位置.图片下载数量.图片下载位置等需求进行批量下载,本文演示py ...

  6. python爬虫爬取百度图片,python爬虫篇2:爬取百度图片

    入门级 import requests import re import os from urllib import error def main(): dirPath = "E:\pyth ...

  7. 利用python爬虫爬取斗鱼图片(简单详细)

    关于 在一个安静的夜晚,我缓慢的打开了电脑,望着已经睡着的父母,我轻轻的把门关上,看着斗鱼颜值主播的魅力,我不尽感叹,要是每天都可以不需要那么麻烦的去看那该有多好! 于是我想起了最近刚学的爬虫,嘴角露 ...

  8. Python爬虫爬取src图片

    Python爬虫爬取图片 需要用到的库: os time request lxml 代码源码如下: import os import time import requests from lxml im ...

  9. 超详细解析python爬虫爬取京东图片

    超详细图片爬虫实战 实例讲解(京东商城手机图片爬取) 1.创建一个文件夹来存放你爬取的图片 2.第一部分代码分析 3.第二部分代码分析 完整的代码如下所示: 升级版代码: 爬取过程中首先你需要观察在手 ...

最新文章

  1. casperjs 安装试用
  2. Dynamics CRM 开启EmailRouter日志记录
  3. HTTP-FLV的两种方式
  4. 唐宇迪机器学习课程数据集_最受欢迎的数据科学和机器学习课程-2020年8月
  5. oracle asm磁盘头 备份,ASM磁盘头的第三个备份-Physically Addressed Metadata Redundancy
  6. C++运算符与类型转换
  7. 聊聊2019年的web前端
  8. Vue.js 循环语句
  9. python任务调度系统web_监听调度系统定时执行任务python_websock
  10. Fiddler中文乱码设置
  11. 国密 GmSSL 版本及安装
  12. cf Educational Codeforces Round 77 D. A Game with Traps
  13. FPGA信号处理系列文章——卷积编码与维特比译码
  14. 别了,腾讯!别了,深圳!我去老家当富豪了!
  15. html、css做一个带搜索图标的搜索框(方法分享)
  16. Pandas数据分析
  17. TIdTCPClient的几种方法
  18. 300ETF期权和50ETF期权的区别
  19. 什么认证在云计算行业内的含金量最大?考试费用贵不贵?
  20. 电脑出现An operating system wasn‘t found,please to Ctrl+alt+del如何解决

热门文章

  1. spring helloWord
  2. 计算机专业考研电路原理,2019电子信息工程考研方向_电路与系统专业解读
  3. autohotkey --- 热键只对特定程序生效,并设置不同等级的搜索功能
  4. RabbitMQ批量消息发送
  5. TCP/IP协议族(第4版)
  6. 写学校相关的申报书经验
  7. potplayer 播放下一个视频时,保持当前屏幕大小不变(锁定播放屏幕尺寸)
  8. c语言中英文翻译 毕业设计,c语言中英文翻译资料 毕业论文(设计).doc
  9. AndroidStudio androidTest安卓测试 test单元测试(Junit)
  10. ssrf漏洞php代码审计1