博客
关于我
爬取网站图片并保存到本地
阅读量:331 次
发布时间:2019-03-04

本文共 1982 字,大约阅读时间需要 6 分钟。

爬取网站图片并保存到本地

第一步:模拟浏览器发出请求,获取网页数据

import requests# 目标网站url = 'https://baijiahao.baidu.com/s?id=1687278509395553439&wfr=spider&for=pc'# 头部伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/ Firefox/84.0'}# 发出请求f = requests.get(url, headers=headers)      # 从网页获取html内容print(f.text)       # 打印网页返回数据print(f)

运行结果:

根据print(f)中的返回值来判定是否爬取成功,为200时表示网页有相应,爬取成功,为403或者其他则表示不成功,可能时网站具有反爬机制。

第二步:拿到网页数据进行解析

html = f.texttitle = re.findall('<title>(.*?)</title>', html)[0]  # 文章标题urls = re.findall('<img class="large" data-loadfunc=0 src="(.*?)" data-loaded=0 />', html)  # 图片网址print(title)print(urls)

运行效果:

在这里使用的是正则表达式,首先需要先找到图片的网址,检索网页(在网页源代码中进行找正则表达式),然后进行匹配找到相应的区域段,而后将需要的部分改成(.*?),不需要的部分改成 .? 不加括号。如程序中的re.findall()中所示。
如果在print(urls)时,出现的结果为 [] ,则表示未能匹配到内容,一般而言是正则出现了问题。

第三步:保存图片

在当前目录下创建文件夹,使用 os.mkdir() 函数

dir_name = './download/images'if not os.path.exists(dir_name):     # 创建文件夹    os.mkdir(dir_name)

保存图片:

for ur in urls:    time.sleep(1)    img_content = requests.get(ur, headers=headers)    with open(dir_name + '/%s.png' % title, 'wb') as f:        f.write(img_content.content)

运行效果:

建议加上time.sleep()函数,如果访问过于频繁可能会被识别出。此处使用 ‘wb ’的二进制形式写入。

 

全部代码:

import requestsimport reimport timeimport os# 目标网站url = 'https://baijiahao.baidu.com/s?id=1687278509395553439&wfr=spider&for=pc'# 头部伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/ Firefox/84.0'}# 发出请求f = requests.get(url, headers=headers)      # 从网页获取html内容# print(f.text)       # 打印网页返回数据print(f)html = f.texttitle = re.findall('<title>(.*?)</title>', html)[0]  # 文章标题urls = re.findall('<img class="large" data-loadfunc=0 src="(.*?)" data-loaded=0 />', html)  # 图片网址print(title)print(urls)dir_name = './download/images'if not os.path.exists(dir_name):     # 创建文件夹    os.mkdir(dir_name)for ur in urls:    time.sleep(1)    img_content = requests.get(ur, headers=headers)    with open(dir_name + '/%s.png' % title, 'wb') as f:        f.write(img_content.content)

 

 

转载地址:http://pthh.baihongyu.com/

你可能感兴趣的文章
02、MySQL—数据库基本操作
查看>>
OpenJDK1.8.0 源码解析————HashMap的实现(一)
查看>>
MySQL-时区导致的时间前后端不一致
查看>>
2021-04-05阅读小笔记:局部性原理
查看>>
go语言简单介绍,增强了解
查看>>
python file文件操作--内置对象open
查看>>
Error connecting to undo manager of souce file
查看>>
架构师入门:搭建基本的Eureka架构(从项目里抽取)
查看>>
Java核心技术及面试指南 流程控制方面的面试题答案
查看>>
MongoDB 快速扫盲贴
查看>>
修复搜狗、360等浏览器不识别SameSite=None 引起的单点登录故障
查看>>
2017/08/21 工作日志
查看>>
EXTJS4.2——10.Tab+Iframe
查看>>
WEB基础——AJAX
查看>>
one + two = 3
查看>>
Kali Day01 --- arpspoof命令进行断网攻击(ARP欺骗)
查看>>
echart关系图平分节点删除时自动平衡问题
查看>>
PHP serialize && unserialize Security Risk Research
查看>>
sctf_2019_easy_heap
查看>>
ASP.NET Core分布式项目实战(oauth2 + oidc 实现 server部分)--学习笔记
查看>>