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 为了增加可读性,忽略空格和 # 后面的注释

最新文章

  1. iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制
  2. python之路十五
  3. SQL Server合并版本
  4. 来聊聊apply和call
  5. UVa1593_Allgnment_Of_Code
  6. 【Android学习】四种布局方式
  7. POJ3581 Sequence(后缀数组)
  8. windows下忘记mysql密码怎么办
  9. Struts2笔记——struts.xml配置详解
  10. springMVC使用注解方式进行页面跳转
  11. 在SQL Server 2014下面使用的SQL2000的Northwind和Pubs示例数据库
  12. asp.net中Web使用Socket
  13. MVC-05 Model(1)
  14. Android Activity和Intent机制学习笔记
  15. hdu 1262 寻找素数对 数论 打表。
  16. 解决long类型传到前端损失精度问题
  17. maven配置私服
  18. 2017-2018-2 20155303『网络对抗技术』Final:Web渗透获取WebShell权限
  19. Python开发【笔记】:列表转字典
  20. 重载的方式写Python的get请求

热门文章

  1. flutter2.x报错解决type (RouteSettings) =&gt; Route&lt;dynamic&gt; is not a subtype of type (RouteSettings) =&gt; Route&lt;dynemic&gt; of function result
  2. Python开发的常用组件
  3. SEO关键词布局方法
  4. Java 进阶P-1.3+P-1.4
  5. 【Android】Android 源码方式使用 opencv 库文件
  6. Django框架之drf:7、认证组件,权限组件,频率组件,过滤的多种用法,排序,分页,
  7. 【Oculus Interaction SDK】(一)设置 VR 相机与控制器 &amp;&amp; 实现简单的抓取功能
  8. @ControllerAdvice解密请求,加密响应
  9. Opengl ES之踩坑记
  10. Jetpack Compose学习(10)——使用Compose物料清单BOM,更好管理依赖版本