首页 > 编程语言 >Python 通过关键词下载百度图片

Python 通过关键词下载百度图片

时间:2022-12-28 17:40:43浏览次数:41  
标签:index name img Python self 关键词 list url 百度



打开百度图片后,输入相关关键词,根据分析,发现百度图片初始只会渲染部分图像到页面上,随着滚轮下滚,就会请求新的数据,因此我们可以判断页面是经过ajax请求数据后,渲染至页面。百度图片网址:

https://image.baidu.com/


打开”网络“,可以发现请求的数据非常非常多,而我们只想找刚刚请求的图像数据。通过分析后,发现了如下图所示的链接返回的就是对应的图像数据,因此我们查看参数构建对应的请求即可。




关于图片分页数据是如何构成的呢,通过查看构建的请求参数,可以发现pn,pn是按30、60、90进行排列的。由此判断是 n*30即可,关于queryWord,是关键词编码后的数据,因URL只支持一部分ASCII编码,而中文内容需要进行编码,使用parse.quote()即可。


示例代码如下:

import re
from urllib import parse
import os
import requests




class BaiPic(object):


def download_img(self, index, url, foldername):
if not os.path.exists(f'./{foldername}'):
print(f'{foldername}文件夹不存在,即将创建')
os.mkdir(f'{foldername}')
print('创建成功')
name = f'./{foldername}/{index}.jpg'
content = requests.get(url)
with open(name, 'wb') as f:
f.write(content.content)


def gain_img_url(self, url):
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
" (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36"
}
content = requests.get(url, headers=header)
rule = r'"thumbURL":"(.*?)"'
url_list = re.findall(rule, content.text)
return url_list


def create_url(self, page, name):
urls_list = []
for i in range(1, page + 1):
url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=8641423673525825447' \
'&ipn=rj&ct=201326592&is=&fp=result&fr=&word={}&queryWord={}cl=2&lm=-1&ie=utf-8&oe=utf-8' \
'&adpicid=&st=-1&z=&ic=0&hd=&latest=©right=&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1' \
'&expermode=&nojc=&isAsync=&pn={}&rn=30&gsm=3c&1648349652108='
url = url.format(name, name, i * 30)
urls_list.append(url)
return urls_list


def main_mtd(self):
page = int(input('请输入下载的页数'))
name = input('请输入你要下载的内容')
all_img_urls_list = []
name_ascii = parse.quote(name)
index_url_list = self.create_url(page, name_ascii)
for url in index_url_list:
img_url_list = self.gain_img_url(url)
all_img_urls_list.extend(img_url_list)
for index, url in enumerate(all_img_urls_list):
self.download_img(index, url, name)




if __name__ == '__main__':
baiPic = BaiPic()
baiPic.main_mtd()



标签:index,name,img,Python,self,关键词,list,url,百度
From: https://blog.51cto.com/u_15924937/5975814

相关文章

  • Python 解析西瓜视频 | 无水印高清下载
    很多小伙伴都有使用西瓜视频,现在西瓜视频作为字节旗下的全家桶一员,拥有很多优质的视频,是很多自媒体小伙伴需要的。但是如何无水印下载这些西瓜视频呢?却让很多人为难,缺少这个......
  • Python 通过 requests 解析抖音直播源
    示例代码:importreimportsysimportrequestsDEBUG=Falseheaders={'authority':'v.douyin.com','user-agent':'Mozilla/5.0(iPhone;CPUiPhoneOS10_3_1l......
  • Python批量下载公众号话题下音频文件
    宝宝喜欢听父母讲故事,年轻人喜欢听文章,年纪大的人喜欢听评书,很多人喜欢听不一样的东西,文案能够从文字转化成为语言说出去,那么效果肯定是大有不同。想必在日常生活中,大家都可......
  • Python 多进程下载站点所有小说
    小说,宅男必备,也是当今社会人们打发时间的一种方式。今天给大家分享的,喜欢看小说的同学可以收藏起来了!!目标站点:https://www.zhenhunxiaoshuo.com爬取思路:获取站点分类下的书......
  • python版抖音短视频无水印下载
    如今,各类短视频应用已融入不少人的日常生活。短短几个镜头,可仰望浩瀚星空,也可俯瞰市井烟火;能近距离观察社会肌理,也能深度透视时代景深。点开视频,领略城乡风貌,了解风土人情,足......
  • 使用xpath爬取对应百度贴吧下面的帖子图片
    hello,小伙伴们,上次给大家分享了如何使用python的正则匹配爬取百思不得姐的网站代码,虽然说正则匹配爬取网站的执行效率高,但是正则匹配的规则编写着实是令人头痛的一件事。今......
  • 利用python爬取百思不得姐demo实例
    作为一个刚接触爬虫的小白,在学习了一定的语法后,第一个目标就是找一个适合初学者的网站来小试牛刀。一般来讲都会选择一个难度系数比较低的网站来进行爬取,这样不仅有助于我们......
  • 【Python 库】bs4的使用
    和lxml一样,BeautifulSoup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据。BeautifulSoup,是一个第三方的库,所以使用之前需要安装,安装方法,输入cmd,调出......
  • python运行环境以及编辑器介绍
    Hello呀,EveryOne,在上次更新了第一篇的公众号推文后,小编也如约的和大家玩起了消失,但是工作还是要进行的,这不又乖乖的回来码字了,废话不再多说,今个带大家来敲下python编写的第......
  • Python爬取意林杂志所有期刊文章
    可能很多人对这个意林杂志比较陌生,但是对于小编来说,那可是满满的回忆。记得我们上中学那时候读过的意林,那可是一本接着一本,其中有很多令人感动的故事,一直被温暖,被治愈。接下......