Python《必应bing桌面图片爬取》

桌面壁纸,来自于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 urlencode

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import  Options

rootrurl = '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)  # 请求图片的实际URL
        if (str(img).find('200') > 1):
            with open(
                    '{}/{}.jpg'.format(dir, title), 'wb') as jpg:  # 请求图片并写进去到本地文件
                jpg.write(img.content)
                print(img_url)
                jpg.close()
            return True
        else:
            return False
    except Exception as e:
        print('exception occurs: ' + img_url)
        print(e)
        return False


def getSubTitleName(str):
    # cop = re.compile("[^\u4e00-\u9fa5^a-z^A-Z^0-9]")  # 匹配不是中文、大小写、数字的其他字符
    cop = re.compile("[^\u4e00-\u9fa5]")  # 匹配不是中文、大小写、数字的其他字符
    string1 = cop.sub('', str)  # 将string1中匹配到的字符替换成空字符
    return string1


def 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 = 0
    for a in lis:
        saveOneImg(save_dir, rootrurl[:-2] + a.get('href'), getSubTitleName(titles[i].get_text()))
        i = i + 1


def 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

效果如下:
请添加图片描述

请添加图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python是一种非常流行的编程语言,非常适合用于数据分析,人工智能和网络爬虫等方面的应用。在本次问题中,我们需要解决的问题是如何使用Python爬取网页上的图片。 首先,我们需要用Python代码创建一个网络爬虫,这个爬虫可以访问特定的网站并抓取网页上所有的图片链接。我们可以使用Python中的Requests库来向网站发送HTTP请求,然后使用BeautifulSoup库来解析网页并提取图片链接。 使用以下代码段可以实现这样的功能: ```python import requests from bs4 import BeautifulSoup url = "http://www.example.com" r = requests.get(url) soup = BeautifulSoup(r.text, 'html.parser') images = soup.find_all('img') for image in images: print(image['src']) ``` 这个代码段首先发送了一个HTTP要求,然后使用BeautifulSoup库解析网页。然后,代码搜索页面中的所有img元素,并获取它们的src属性(即图片链接)。最后,把得到的图片链接输出到控制台,或者存储到本地磁盘上。 如果想要下载这些图片,需要使用Python中的requests库中的get方法下载这些图片,并保存到本地。 使用以下代码段将下载这些图片并保存到本地: ```python import requests url = "http://example.com/image.jpg" r = requests.get(url) if r.status_code == 200: with open("image.jpg", 'wb') as f: f.write(r.content) ``` 这个代码段首先发送HTTP要求,然后检查HTTP响应中的状态码是否是200(即成功)。如果HTTP响应状态码是200,就将响应内容写入到磁盘文件中。 现在你已经学会了如何使用Python编写网络爬虫爬取网页上的图片,包括如何从网页中抽取图片链接,并将这些图片下载到本地磁盘。你可以使用这些技能来编写更复杂的网络爬虫,包括在社交媒体平台上抓取图片等高级应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值