python根据用户需求输入想爬取的内容及页数爬取图片方法详解

Python根据用户需求输入想爬取的内容及页数爬取图片方法详解

在Python中,使用第三方库Requests和BeautifulSoup可以很方便地完成对网站的爬取操作。本攻略将介绍如何根据用户需求输入想爬取的内容及页数爬取图片。

1. 安装相关库

首先,需要安装两个库:Requests和BeautifulSoup。可以使用pip命令进行安装:

pip install requests
pip install beautifulsoup4

2. 进行网站爬取

接下来,需要使用Requests库进行网站爬取操作。我们可以使用输入框让用户输入所需爬取的内容以及要爬取的页数,然后将其传递给Requests库的get()方法进行网站爬取操作。

我们以百度图片搜索为例,假设用户想要搜索名称为“cat”的图片,共爬取3页。相应的代码如下:

import requests
from bs4 import BeautifulSoup

# 输入搜索内容和爬取页数
word = input('请输入要搜索的图片名称:')
page_num = int(input('请输入要爬取的页数:'))

# 处理搜索内容,将空格替换为“+”
word = word.replace(' ', '+')

# 循环爬取指定页数的图片
for i in range(page_num):
    # 构造URL
    url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + '&pn=' + str(i * 20)

    # 发送请求
    response = requests.get(url)

    # 解析HTML
    soup = BeautifulSoup(response.content, 'html.parser')
    imgs = soup.find_all('img', class_='main_img')

    # 下载图片
    for img in imgs:
        img_url = img['src']
        img_name = img_url.split('/')[-1]
        with open(img_name, 'wb') as f:
            f.write(requests.get(img_url).content)

在上述代码中,我们首先使用Input()方法让用户输入要搜索的图片名字以及要爬取的页数。然后,使用replace()方法将空格替换为“+”,构造出百度图片搜索的URL,其中“pn”参数代表的是从第几张图片开始爬取。

接下来,我们使用Requests库的get()方法发送网络请求,并使用BeautifulSoup库解析HTML。在解析完HTML后,我们可以使用find_all()方法获取到所有的图片元素,在循环遍历每个元素的时候,将图片下载到本地。

3. 示例说明

下面是两个使用该方法实现的实际示例。

示例一:爬取豆瓣书籍图片

假设我们想要爬取豆瓣上所有评价数超过1000的书籍封面图片,共爬取20页。相应的代码如下:

import requests
from bs4 import BeautifulSoup

# 输入搜索内容和爬取页数
url = 'https://book.douban.com/tag/?view=type&icn=index-sorttags-all'
page_num = 20

# 循环爬取指定页数的图片
for i in range(page_num):
    # 构造URL
    url = url + '&start=' + str(i * 20)

    # 发送请求
    response = requests.get(url)

    # 解析HTML
    soup = BeautifulSoup(response.content, 'html.parser')
    items = soup.find_all('li', class_='subject-item')

    # 下载图片
    for item in items:
        rating_num = item.find('span', class_='rating_nums')
        if rating_num and float(rating_num.get_text()) >= 8.5:
            img = item.find('img')
            img_url = img['src']
            img_name = img_url.split('/')[-1]
            with open(img_name, 'wb') as f:
                f.write(requests.get(img_url).content)

在上述代码中,我们使用requests库访问豆瓣读书首页,并根据“评价数超过1000”以及“评分大于8.5”的条件爬取书籍封面图片。在每次循环中,我们需要更新URL的参数,然后重新请求HTML页面进行解析。

示例二:爬取美女写真图片

假设我们想要爬取某个美女写真网站上的所有图片,共爬取10页。相应的代码如下:

import requests
from bs4 import BeautifulSoup

# 输入搜索内容和爬取页数
url = 'https://www.meituri.com/x/21/'
page_num = 10

# 循环爬取指定页数的图片
for i in range(1, page_num+1):
    # 构造URL
    if i == 1:
        url = url
    else:
        url = url + 'index_' + str(i) + '.html'

    # 发送请求
    response = requests.get(url)

    # 解析HTML
    soup = BeautifulSoup(response.content, 'html.parser')
    items = soup.find_all('div', class_='image-item')

    # 下载图片
    for item in items:
        img_url = item.find('a')['href']
        img_name = img_url.split('/')[-1]
        with open(img_name, 'wb') as f:
            f.write(requests.get(img_url).content)

在上述代码中,我们使用requests库访问某个美女写真网站,并抓取所有的图片。在每次循环中,我们需要更新URL的参数,以便获取到所有的页面上的图片元素。然后,我们可以使用find()方法获取到图片的连接,然后将其下载下来。

以上就是本攻略的全部内容。在进行网站爬取时,需要注意到一些法律法规的限制,比如不能爬取侵犯版权的内容。一定要遵守相关法律法规。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python根据用户需求输入想爬取的内容及页数爬取图片方法详解 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python sklearn库实现简单逻辑回归的实例代码

    python sklearn库实现简单逻辑回归的实例代码攻略 什么是逻辑回归 逻辑回归一般用于预测某个事物出现的可能性。如果把逻辑回归看成房屋,那么我们的目标就是通过已知的一些特征(比如卧室数量、房屋面积、位置等)来判断该房屋是否会被买走(或者换种说法,就是想预测该房屋被买的概率)。逻辑回归中的因变量是二元的(例如买或不买、是或否等),所以适合用来做二分类。…

    python 2023年5月19日
    00
  • Python matplotlib画图与中文设置操作实例分析

    下面我将为你详细讲解 “Python matplotlib画图与中文设置操作实例分析”的完整攻略。 环境准备 首先,需要安装以下一些依赖库: matplotlib, pandas, numpy 在 Python 3 中安装这些库可以通过 pip 命令来安装,例如: pip install matplotlib pandas numpy 中文字符设置 使用 m…

    python 2023年5月18日
    00
  • tensorflow使用range_input_producer多线程读取数据实例

    下面我将为你详细讲解 tensorflow 使用 range_input_producer 多线程读取数据的完整攻略。 什么是 range_input_producer 在使用 TensorFlow 进行模型训练时,通常需要将训练数据分批输入到模型中。range_input_producer 是 TensorFlow 中构建多线程输入数据的一种方法。它可以帮…

    python 2023年5月19日
    00
  • Python操作Excel神器openpyxl使用教程(超详细!)

    下面将为你详细讲解关于“Python操作Excel神器openpyxl使用教程(超详细!)”的完整实例教程。 Python操作Excel神器openpyxl使用教程(超详细!) 介绍 有时候我们需要将Python程序生成的数据保存到Excel表格中,或者将Excel表格中的数据读取出来。这就需要用到Python库openpyxl。 openpyxl是一个用于…

    python 2023年5月13日
    00
  • Python中字典和JSON互转操作实例

    当我们在Python中使用字典操作时,很有可能需要将字典转换为JSON格式,或者将JSON数据转换为Python中的字典。Python中提供了两个标准库,分别是json和pickle,其中json库可以实现字典和JSON互转的操作。下面,我们将对字典和JSON互转的实例进行分析说明。 1. 字典转JSON 将Python中的字典转换为JSON格式 在Pyth…

    python 2023年5月13日
    00
  • python中字符串比较使用is、==和cmp()总结

    Python中字符串比较有三种方式:is、==和cmp()。接下来我们来详细讲解这三种方式的使用以及它们之间的区别。 字符串比较使用 is is是Python中的一种运算符,用于比较两个对象的内存地址是否相同。使用is来比较两个字符串时,如果两个字符串的内存地址相同,那么返回True,否则返回False。 例如,我们定义两个字符串,然后将它们分别赋值给两个变…

    python 2023年6月5日
    00
  • Python opencv应用实现图片切分操作示例

    下面是Python Opencv应用实现图片切分操作的完整攻略: 1. 概述 在图像处理的领域中,图像切分是非常基础而重要的操作,它可以将一张大图片切分成小图片,方便进行后续的处理。本文将介绍如何使用Python Opencv实现图像切分操作。 2. 准备工作 在使用Python Opencv实现图像切分操作之前,需要安装以下工具和库: Python 3.x…

    python 2023年5月19日
    00
  • Python使用sftp实现传文件夹和文件

    当我们需要将本地的文件或文件夹上传到远程服务器中时,可以使用sftp协议实现。下面是Python使用sftp实现传文件夹和文件的完整攻略。 安装paramiko库 paramiko是Python中的一款SSH客户端,可以方便地实现ssh和sftp协议的连接,进行文件传输。我们需要先安装paramiko库。 pip install paramiko 连接服务器…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部