Python制作爬虫抓取美女图

yizhihongxing

这里是Python制作爬虫抓取美女图的完整攻略。

首先,我们需要了解一下爬虫的基本原理。爬虫就是通过程序自动抓取网页上的信息,并将其保存到本地或者进行进一步的处理。在Python中,我们可以通过使用第三方库(比如requests、BeautifulSoup等)来实现爬虫功能。

接下来,我们详细介绍一下Python制作爬虫抓取美女图的完整攻略:

步骤一:分析网站

在爬虫之前,我们需要对目标网站进行分析,了解其网页结构、URL规律、反爬虫机制等信息。

以抓取糗事百科中的美女图为例,我们可以先打开糗事百科的网址(https://www.qiushibaike.com/imgrank/),并在Chrome浏览器中按下F12键打开开发者工具。通过开发者工具的Elements选项可以查看网页的结构,通过Network选项可以查看每个请求的URL。

步骤二:编写爬虫程序

在分析网站之后,我们就可以开始编写Python爬虫程序了。下面是一个简单的程序示例:

import requests
from bs4 import BeautifulSoup

url = 'https://www.qiushibaike.com/imgrank/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
response = requests.get(url, headers=headers)

soup = BeautifulSoup(response.text, 'html.parser')
imgs = soup.find_all('img', class_='illustration')

for img in imgs:
    img_url = 'https:' + img['src']
    img_name = img['alt'] + '.jpg'
    with open(img_name, 'wb') as f:
        f.write(requests.get(img_url).content)
        print('Successfully download ' + img_name)

这个程序主要的功能就是通过requests模块访问目标网站,并通过BeautifulSoup模块解析网页代码。然后从代码中筛选出带有class为illustration的img标签,从中提取出图片的URL,然后下载到本地。

具体而言,我们通过requests库发送一个get请求,获取目标网站的HTML文本,然后将HTML文本传递给BeautifulSoup构造函数进行解析。在这个过程中,我们还要设置请求头,模拟浏览器访问,避免被反爬虫机制拦截。

接下来,通过find_all方法筛选出HTML文本中所有class为illustration的img标签,并通过循环遍历其属性,提取出图片的URL和名称。然后,通过requests模块调用get方法,下载图片到本地。

这里有一个完整的实例代码,可以直接复制粘贴运行:

import requests
from bs4 import BeautifulSoup

base_url = 'https://www.qiushibaike.com/imgrank/page/%d/'

for i in range(1, 10):
    url = base_url % i
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
    response = requests.get(url, headers=headers)

    soup = BeautifulSoup(response.text, 'html.parser')
    imgs = soup.find_all('img', class_='illustration')

    for img in imgs:
        img_url = 'https:' + img['src']
        img_name = img['alt'] + '.jpg'
        with open(img_name, 'wb') as f:
            f.write(requests.get(img_url).content)
            print('Successfully download ' + img_name)

在这个实例中,我们通过一个循环遍历多个页面,将图片下载到本地并保存为jpg文件。

示例一:抓取QT老师的美女图

接下来,我们以抓取QT老师的美女图为例,进行实例演示。

QT老师的个人网站为:https://www.qttc.net/,我们可以在其首页点击美女图进行查看,然后进行右键检查。

在开发者工具中,我们可以查看到HTML代码中包含class为books的元素,而其中又包含a标签和img标签,因此我们可以通过BeautifulSoup抓取这些信息。

下面是Python代码示例:

import requests
from bs4 import BeautifulSoup

url = 'https://www.qttc.net/index.php?m=&c=Index&a=pics'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
response = requests.get(url, headers=headers)

soup = BeautifulSoup(response.text, 'html.parser')
books = soup.find_all('div', class_='books')

for book in books:
    a = book.find('a')
    img_url = a.img['src']
    img_name = img_url.split('/')[-1]
    with open(img_name, 'wb') as f:
        f.write(requests.get(img_url).content)
        print('Successfully download ' + img_name)

在这个代码示例中,我们通过requests库和BeautifulSoup库获取了QT老师的个人网站页面,然后从HTML代码中筛选出class为books的元素,并循环获取其子元素。最终,我们通过requests库下载图片到本地。

示例二:抓取妹子图网站的图片

接下来,我们以抓取妹子图网站(http://www.meizitu.com/)的图片为例,进行实例演示。

在妹子图网站中,我们可以通过点击分类标签进入不同的图库,然后获取到该图库下的所有图片。在这里,我们以美女图库为例。

在美女图库中,我们可以通过右键检查获取到图片的HTML代码。而在HTML代码中,我们可以发现图片的URL都包含有http://mm.chinasareview.com/前缀,因此我们可以通过BeautifulSoup抓取这些信息。

下面是Python代码示例:

import requests
from bs4 import BeautifulSoup

url = 'http://www.meizitu.com/a/list_1_1.html'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
response = requests.get(url, headers=headers)

soup = BeautifulSoup(response.text, 'html.parser')
lis = soup.find('ul', class_='wp-list clearfix').find_all('li')

for li in lis:
    a = li.find('a')
    if a is not None:
        img_url = a.img['data-original']
        img_name = img_url.split('/')[-1]
        with open(img_name, 'wb') as f:
            f.write(requests.get(img_url).content)
            print('Successfully download ' + img_name)

在这个代码示例中,我们通过requests库和BeautifulSoup库获取了妹子图网站页面的HTML文本,然后从HTML代码中筛选出class为wp-list clearfix的元素,并循环获取其子元素。最终,我们通过requests库下载图片到本地。

以上就是Python制作爬虫抓取美女图的完整攻略,希望对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python制作爬虫抓取美女图 - Python技术站

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

相关文章

  • python数学建模之三大模型与十大常用算法详情

    下面是关于“Python数学建模之三大模型与十大常用算法”的完整攻略。 1. 三大模型 1.1 线性规划模型 线性规划模型是一种优化模型,它的目是在一组线性约束条件,最大化或最小化一个线性目标函数。在Python中,我们可以使用scipy.optimize.linprog函数来实现线性规划模型。 1.2 非线性规划模型 非线性规模型是一种优化模型它的目标是在…

    python 2023年5月13日
    00
  • python生成随机红包的实例写法

    下面是详细的攻略。 1. 了解随机红包的概念 随机红包是指在一定的总金额范围内,通过随机算法生成不同的金额数量,用于互动活动及其他红包应用场景。在生成随机红包时,需要考虑以下因素: 红包总金额 红包数量 红包金额范围 红包金额分布方式(均值分配、随机分配、正态分布等) 2. 实现随机红包的Python代码 在Python中,可以通过random库实现随机红包…

    python 2023年6月3日
    00
  • python爬虫请求头的使用

    什么是请求头 在使用 Python 爬虫抓取数据时,我们需要向目标网站发送请求,而这个请求除了包含 URL 以外,还包含很多 headers(请求头),这个 headers 包含很多信息,用于告诉服务器有关于请求方的一些信息(如浏览器、操作系统、语言等)以及请求的一些要求。通俗地说,它就是发往服务器的一份信函,是HTTP请求中的一部分。 请求头与反爬虫技术 …

    python 2023年6月3日
    00
  • 深入理解Python变量的数据类型和存储

    深入理解 Python 变量的数据类型和存储 Python 是一门动态类型语言,即变量的类型是在运行时确定的。因此,深入理解 Python 变量的数据类型和存储及其在计算机底层的表示方式,有助于我们更好地使用 Python 进行编程。 Python 变量的数据类型 Python 内置了五种标准的数据类型,分别是: Numbers(数字):整数、浮点数、复数等…

    python 2023年5月14日
    00
  • python判断一个集合是否为另一个集合的子集方法

    判断一个集合是否为另一个集合的子集,可以使用Python内置的集合操作。以下是两个常用的方法: 方法一:使用issubset()函数 issubset()函数是用来判断一个集合是否为另一个集合的子集,语法如下: set.issubset(set2) 其中set代表集合的变量名,set2表示要进行比较的集合,函数返回True表示set是set2的子集,Fals…

    python 2023年5月13日
    00
  • 比较两个电子表格,删除重复项并将结果导出到 python 中的 csv

    【问题标题】:Comparing two spreadsheets, removing the duplicates and exporting the result to a csv in python比较两个电子表格,删除重复项并将结果导出到 python 中的 csv 【发布时间】:2023-04-01 18:47:01 【问题描述】: 我正在尝试比较…

    Python开发 2023年4月8日
    00
  • python selenium 获取标签的属性值、内容、状态方法

    Python Selenium 获取标签的属性值、内容、状态方法 在使用Python Selenium进行web自动化测试时,我们有时需要获取一些元素的属性值、内容或状态。在本篇文章中,我们将介绍如何使用Python Selenium获取这些信息的方法。 获取标签属性值 我们可以使用get_attribute()方法来获取元素的属性值,方法的参数为要获取的属…

    python 2023年6月3日
    00
  • Python3多线程详解

    Python3多线程详解 Python3中的多线程模块是_thread和threading。_thread是低级模块,thread是高级模块,对_thread`进行了封装,使得使用更加方便。本文将详细介绍Python3多线程的使用方法。 创建线程 Python中创建线程有两种方式:使用_thread模块和使用threading模块。下面是两种方式的示例: 使…

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