python爬虫抓取百度图片_python爬虫(1) : 爬取百度图片

本文介绍了如何使用Python的requests和re模块抓取百度图片。通过设置User-Agent,获取网页源码,利用正则表达式匹配图片链接,并使用tqdm进行进度条显示,实现自动下载指定数量的图片。
摘要由CSDN通过智能技术生成

最近在自学python的爬虫方法,总结了一些笔记在此分享。

先以搜索词“哆啦A梦”为例:

可能使用到的头文件有:

import re

import os

import requests

使用requests模块的get()方法可以获得一个网址的源码

url = '''https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=哆啦A梦

&pn=20&gsm=3c&ct=&ic=0&lm=-1&width=0&height=0'''

header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'}

result = requests.get(url, headers=header).content.decode()

print(result)

进入此网址,按F12浏览网页源代码可以发现,每张图片对应地址有如下格式:

使用re模块中的findall()方法匹配所有此格式的字符串:

url_list = re.findall(r'"thumbURL":"(.*?.jpg)"',result,re.S)

url_list为一个有60个元素的列表,每个元素对应一张图片的链接。

最后一步,遍历url_list中的所有元素,逐个下载保存即可。

idx=1

for url in url_list:

img=requests.get(url,headers=header)

file=open('image/'+str(idx)+'.jpg','wb')

file.write(img.content)

file.close()

idx+=1效果图

最后完善一下交互操作即可实现自动爬取百度图片。

import re

import os

import requests

import tqdm

header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'}

def getImg(url,idx,path):

img=requests.get(url,headers=header)

file=open(path+str(idx)+'.jpg','wb')

file.write(img.content)

file.close()

search=input("请输入搜索内容:")

number=int(input("请输入需求数量:"))

idx=0

path='image/'+search+'/'

if not os.path.exists(path):

os.makedirs(path)

bar=tqdm.tqdm(total=number)

for i in range(number//60+1):

url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+search+'&pn=%d&gsm=3c&ct=&ic=0&lm=-1&width=0&height=0'%(i*60)

result = requests.get(url, headers=header).content.decode()

url_list = re.findall(r'"thumbURL":"(.*?.jpg)"',result,re.S)

for url in url_list:

idx+=1

getImg(url,idx,path)

bar.update(1)

if idx>=number:

break

print("finish!")效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值