python爬虫模板之正则表达式re爬取百度图片

本爬虫程序写于2022年1月20日,之后网站可能做出调整,导致爬虫失效
注意:百度也有反爬策略,因此需要做到以下两点
(1)headers中要有‘Accept’这个字段的信息
(2)params中的’kw=’ ''要和url中的word保持一致

一、正则表达式语法

在这里插入图片描述

二、实现代码

import re
import requests
import os


def get_picture(word, page, x):
    url = f'https://image.baidu.com/search/index?tn=baiduimage&ipn=r&word={word}&pn={page*30}'
    # pn代表翻页,每30张图片为1页  0   30   60   90 ....

# 伪装的像一点,否则过不了百度安全验证
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36',
        'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.9'
    }

    # 必须要加这个,否则失败
    params = {
        'kw':f'{word}'
    }

    res = requests.get(url, headers=headers, params=params).content.decode('utf-8')
    if not os.path.exists('./images'):
        os.mkdir('./images')
    for img in re.findall('"objURL":"(.*?)",',res):
        print(img)
        image = requests.get(img, headers=headers)
        open(f'./images/{x}.jpg', 'wb').write(image.content)
        x += 1

if __name__ == "__main__":
	x = 0
	word = input("请输入您要采集的图片名称:")
	page = input("请输入您要采集的图片页数:")
	for i in range(0,int(page)):
    	get_picture(word,i,x)
    	x+=30
	print("共爬到%d页,%d个图片" % (page, x))




  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值