Python笔记:爬虫下载图片的基本思路(requests就能搞定)
·
一、先上结论:
- 只要找到每个图片对应的链接,就一定能够下载它。
- 用到的主要函数:
request()(中文说明文档链接),re.findall()(官方文档链接)。
二、再说步骤:
A、How、Where找到图片链接?
- 每张图片都有自己对应的链接。在浏览器中,按
F12,在火狐的查看器或者Chorme的elements。见下边例子:
B、用代码How把我们想要的链接提取出来呢?
- 使用正则表达式
.findall()。
C、提取出来链接后How下载到本地呢?
open()和write()函数
三、最后案例

"""案例代码"""
import requests
import re
# 输入我们的网站地址
url = 'http://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E5%9B%BE%E7%89%87&step_word=&hs=0&pn=2&spn=0&di=181197009070&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=4075680052%2C587526839&os=46658057%2C248100521&simid=0%2C0&adpicid=0&lpn=0&ln=1612&fr=&fmq=1557668430731_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined©right=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fpic18.nipic.com%2F20111213%2F8791344_093424951000_2.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bgtrtv_z%26e3Bv54AzdH3Ffi5oAzdH3F8AzdH3FdcAzdH3Fc9lac8lh0aa810cc_z%26e3Bip4s&gsm=0&rpstart=0&rpnum=0&islist=&querylist=&force=undefined'
req = requests.get(url) # 用代码获取网页
txt = req.text # req.text : 返回文本形式url的内容,相当于文本形式的HTML
# 使用正则表达式提取目标链接。具体是先人工看看该网站url的特点,再确定具体的正则pattern
links = re.findall(r'src="(.*2\.jpg)"', txt) # 关于正则表达式见官网 https://docs.python.org/3/library/re.html
for link in links:
req = requests.get(link) # 把提取出来的链接,全部打开
pic = req.content # 并返回2进制形式的link的非文本部分,相当于2进制形式的HTML非文本部分
path='e:/pictures/baidutupian.jpg' # 假设已经在e盘创建了文件夹“pictures”
with open(path, 'wb') as f: # 更多见下边的备注
f.write(pic)
备注:
1. with open(path, 'wb') as f
wb:即以二进制的形式进行操作。如果文件不存在,则创建;如果存在,则先删除(并复写)已有数据;(附注链接:r、w、a、rb、wb、ab +的区别)
2. 如果是文件夹不存在,怎么自动创建?
# 检测是否存在 e:/picutres,如果存在、略过,否则创建
if not os.path.exist('e:/pictures'):
os.makedirs('e:/pictures')
3. 如果print(req.text)里边是乱码怎么办?
可以使用req.encoding = req.apparent_encoding:自动返回并使用网页里边的编码格式,没有乱码。
更多推荐




所有评论(0)