桌面壁纸,来自于bing,必应的壁纸网址。https://bing.ioliu.cn/
每一页都有12张照片,每个照片有对应的download高清大图的地址,有多个分页。

但是,麻烦的是打开后,按不了F12,于是用python直接爬取页面,才发现是这样的。

123就是F12的code,这个网址禁止了F12,禁止了ctrl+shirt+i,禁止了ctrl+s。

但是这不影响啊,我们用urrlib.request可以获得整个页面的信息。
每个图片的文本描述信息是在< h3>元素里的。
每个图片的下载地址是在< a class = “ctrl download”>元素里的
总页数信息是在< div class=“page”>的< span>里的。

每一页面的url如下是:
https://bing.ioliu.cn/?p=1
https://bing.ioliu.cn/?p=2
https://bing.ioliu.cn/?p=3
https://bing.ioliu.cn/?p=4

完整代码如下:

import time
from concurrent.futures import ThreadPoolExecutor
import time
import os
import re
from urllib.parse import urlencodeimport requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import  Optionsrootrurl = 'https://bing.ioliu.cn/?'
save_dir = 'D:/estimages/'
headers = {"Referer": rootrurl,'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",'Accept-Language': 'en-US,en;q=0.8','Cache-Control': 'max-age=0','Connection': 'keep-alive'
}  ###设置请求的头部,伪装成浏览器def saveOneImg(dir, img_url, title):new_headers = {"Referer": img_url,'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",'Accept-Language': 'en-US,en;q=0.8','Cache-Control': 'max-age=0','Connection': 'keep-alive'}  ###设置请求的头部,伪装成浏览器,实时换成新的 header 是为了防止403 http code问题,防止反盗链,try:img = requests.get(img_url, headers=new_headers)  # 请求图片的实际URLif (str(img).find('200') > 1):with open('{}/{}.jpg'.format(dir, title), 'wb') as jpg:  # 请求图片并写进去到本地文件jpg.write(img.content)print(img_url)jpg.close()return Trueelse:return Falseexcept Exception as e:print('exception occurs: ' + img_url)print(e)return Falsedef getSubTitleName(str):# cop = re.compile("[^\u4e00-\u9fa5^a-z^A-Z^0-9]")  # 匹配不是中文、大小写、数字的其他字符cop = re.compile("[^\u4e00-\u9fa5]")  # 匹配不是中文、大小写、数字的其他字符string1 = cop.sub('', str)  # 将string1中匹配到的字符替换成空字符return string1def getOnePage(i):params = {'p': i,}url = rootrurl + urlencode(params)print(url)html = BeautifulSoup(requests.get(url, headers=headers).text, features="html.parser")titles = html.find_all('h3')lis = html.find_all('a', {'class': 'ctrl download'})i = 0for a in lis:saveOneImg(save_dir, rootrurl[:-2] + a.get('href'), getSubTitleName(titles[i].get_text()))i = i + 1def getNumOfPages():html = BeautifulSoup(requests.get(rootrurl, headers=headers).text, features="html.parser")return int(html.find('div', {'class': 'page'}).find('span').get_text().split('/')[1])if __name__ == '__main__':getTotal = getNumOfPages()for i in range(1, getTotal+1):getOnePage(i)pass

效果如下:

Python《必应bing桌面图片爬取》相关推荐

  1. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  2. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  3. 【Kaggle Learn】Python 5-8

    五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...

  4. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  5. 使用python愉快地做高数线代题目~

    今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...

  6. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  7. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

  8. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  9. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

  10. Python gRPC 安装

    1. 安装依赖库 sudo pip3 install grpcio sudo pip3 install protobuf sudo pip3 install grpcio_tools 2. 生成对应文 ...

最新文章

  1. Java:RMI远程调用
  2. java中字节_java中的变量各占得字节数
  3. Linux CP文件夹略过目录的解决
  4. java各种包的用途
  5. Tensorflow利用函数修饰符@tf.custom_gradients自定义函数梯度
  6. Nearest Common Ancestors
  7. python 扯线木偶_Python计算器求助~求大神指导~QAQ急!
  8. 2篇word文档比较重复率_继续教育 | 你该知道的论文小技巧——重复率检测
  9. 关于js获取radio和select的属性并控制
  10. html 输入框 相加,JS中,如何实现两个输入框中内容的数字相加?
  11. 2021北师大丰台实验高考成绩查询,【北京市丰台区实验学校网站】2021招生|怎么样|排名|高中部|初中部...
  12. python中easygui有几种_Python 模块EasyGui详细介绍
  13. 空间中任一点到超平面的距离公式的推导过程
  14. laravel基础操作手册
  15. c语言局域网聊天,局域网聊天的程序(C++版)
  16. 深度学习为什么会出现validation accuracy大于train accuracy的现象?
  17. Python遥感影像拼接
  18. ansible(一)自动化运维工具
  19. HTML之设置背景、边框、边距和补白
  20. (转)用遗传算法优化BP神经网络的Matlab编程实例

热门文章

  1. centos6/7 yum安装mysql客户端和rpm包方式安装方式
  2. 关于数组方面的算法分析
  3. JQuery如何与数据库交互
  4. 《洛克菲勒留给儿子的38封信》 第四封:现在就去做
  5. 我要去三清山国家公园。。。
  6. Serverless 实战 —— 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
  7. 图片服务 - thumbor过滤器
  8. linux创建脚本文件auto,linux 自动化部署脚本
  9. [译]C# 7系列,Part 7: ref Returns ref返回结果
  10. 关于golang的一些基础