import os.path
import re import requests if __name__ == '__main__':
# 如果不存在该文件夹则进行创建
if not os.path.exists('./saimenshibo'):
os.mkdir('./saimenshibo') url = 'https://www.symansbon.cn/product_ajax.aspx'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
# 抓取前四页的图片数据
for i in range(1, 5):
param = {
't': '10',
'page': i,
'pid': '27',
'_': '1666084852813'
}
# 得到页面源码
page = requests.get(url=url, params=param, headers=header).text
# 正则匹配它的src () => 匹配括号内的表达式 .*? => 惰性匹配
ex = '<li>.*?<figure>.*?<img src="(.*?)" alt.*?</li>'
# 获取到图片所有的url地址
img_list = re.findall(ex, page, re.S)
for img in img_list:
if not str(img).startswith('https:'):
# 获取完整URL
img_src = 'https://www.symansbon.cn/' + img
else:
img_src = img
# 根据url下载图片 .content 获取二进制数据
img_data = requests.get(url=img_src, headers=header).content
# img_src='Uploadfiles/Picture/2022-8-5/2022851751539645.jpg' 取xxx.jpg作为图片名称
img_name = str(img).split('/')[-1]
# 拼接图片的保存路径
img_url = './saimenshibo/' + img_name
# 第一部获取的页面上只是获取了所有图片的url,需要根据指定的URL去二进制下载对应图片数据
with open(img_url, 'wb') as fp:
fp.write(img_data)
print('下载成功')
print('下载完成!')

补充关于python re模块中re.S, re.U, re.I, re.M, re.X

修饰符 描述
re.I 忽略大小写
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B
re.X 为了增加可读性,忽略空格和 # 后面的注释

Python爬虫抓取图片(re模块处理正则表达式)的更多相关文章

  1. python 爬虫抓取心得

    quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...

  2. python爬虫抓网页的总结

    python爬虫抓网页的总结 更多 python 爬虫   学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自 ...

  3. Python爬虫与数据分析之模块:内置模块、开源模块、自定义模块

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

  4. [python爬虫] 爬取图片无法打开或已损坏的简单探讨

    本文主要针对python使用urlretrieve或urlopen下载百度.搜狗.googto(谷歌镜像)等图片时,出现"无法打开图片或已损坏"的问题,作者对它进行简单的探讨.同时 ...

  5. Python爬虫----抓取豆瓣电影Top250

    有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...

  6. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  7. 转载:用python爬虫抓站的一些技巧总结

    原文链接:http://www.pythonclub.org/python-network-application/observer-spider 原文的名称虽然用了<用python爬虫抓站的一 ...

  8. python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...

  9. 用python爬虫抓站的一些技巧总结 zz

    用python爬虫抓站的一些技巧总结 zz 学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自动收邮件的脚本, ...

  10. python爬虫抓站的一些技巧总结

    使用python爬虫抓站的一些技巧总结:进阶篇 一.gzip/deflate支持现在的网页普遍支持gzip压缩,这往往可以解决大量传输时间,以VeryCD的主页为例,未压缩版本247K,压缩了以后45 ...

随机推荐

  1. angular在服务中调用组件的某个方法,并传参给组件,(反向调用),变量改变后,强制更新视图

    需要被调用方法的组件文件 import { Component, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; ...

  2. gRPC介绍(以Java为例)

    1.简介 1.1 gRPC的起源 RPC是Remote Procedure Call的简称,中文叫远程过程调用.用于解决分布式系统中服务之间的调用问题.通俗地讲,就是开发者能够像调用本地方法一样调用远 ...

  3. 为什么游戏公司应该选择 Cloud Spanner 来支持他们的游戏?

    普华永道最近的一份报告指出,全球游戏行业是过去几年经历显着增长的行业之一,到 2026 年该行业(不包括电子竞技)的价值有望达到 3210 亿美元.过去仅三年时间,该行业就增加了 5 亿玩家,全球玩家 ...

  4. Stream流中的常用方法_Foreach-Stream流中的常用方法_filter

    Stream流中的常用方法_Foreach 流模型的操作很丰富,这里介绍一些常用的API.这些方法可以被分成两种︰·延迟方法∶返回值类型仍然是Stream,接口自身类型的方法,因此支持链式调用.(除了 ...

  5. 朋友圈那串神秘字符背后的开源项目「GitHub 热点速览」

    ​如果你这周没刷到类似 "npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237..." 的一串字符,那就说明本期 GitHub T ...

  6. 前端知识点(js部分)

    目录 一.JS简介 简介 ECMAScript的历史 二.JS基础 1.注释语法 2.引入js的多种方式 3.结束符号 三.变量与常量 编写和运行js代码的两种方式 变量声明 四.基本数据类型 1.数 ...

  7. 11月22日内容总结——存取数据的历史和数据库的介绍、MySQL介绍、下载和相关操作

    目录 一.存取数据的演变史 1.文本文件 2.软件开发目录规范 3.数据库服务(重点) 1.数据库管理软件的由来 ①程序所有的组件就不可能运行在一台机器上 ②数据安全问题 ③并发 总结 二.数据库软件 ...

  8. 真正“搞”懂HTTP协议10之缓存控制

    HTTP缓存相关的问题好像是前端面试中比较常见的问题了,上来就会问什么cache-control字段有哪些,有啥区别啥的.嗯--说实话,我觉得至少在本篇来说,HTTP缓存还算不上复杂,只是字段稍微多了 ...

  9. 借助 Flutter 跨平台特性连接 10 亿玩家 | Flutter 开发者故事

    由光子工作室及 Krafton 联合研发的 PUBG MOBILE 依然保持着极高的人气,目前全球有 10 亿玩家,日活跃 5,000 万 (不包括中国大陆地区).从游戏策划伊始,团队就打算为各个平台 ...

  10. 构建api gateway之 基于etcd实现动态配置同步

    配置中心 在之前 tcp的yaml配置 介绍了如何监听yaml文件变化然后更新配置. 当然假如我们有很多实例,那么yaml改动将是非常痛苦的事情,那么如何做到配置文件统一管理,实时更新呢? 我们可以引 ...