Python爬虫抓取图片(re模块处理正则表达式)

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 为了增加可读性,忽略空格和 # 后面的注释
posted @ 2022-10-18 17:57  没有童话的鱼  阅读(208)  评论(0编辑  收藏  举报