python-爬虫实例(3):获取豆瓣小说分类界面的图片信息

目录

前言

        道路千万条,安全第一条

        爬虫不谨慎,亲人两行泪

获取豆瓣小说分类界面的图片信息

一、话不多说,浇给

二、爬虫四步走

1.UA伪装

2.获取url

3.发送请求

4.获取响应数据进行解析并保存


前言

        道路千万条,安全第一条

        爬虫不谨慎,亲人两行泪

 

获取豆瓣小说分类界面的图片信息

        上一篇我们说了怎么去获取该界面的文本信息,

python-爬虫实例(2):获取豆瓣小说分类界面的文本信息-CSDN博客

        今天我们来获取它的图片信息。

 

一、话不多说,浇给

import requests
import fake_useragent
from lxml import etree
import os.path

head = {
    "User-Agent": fake_useragent.UserAgent().random
}

pic_name = 0


def tu():
    for j in range(0, 100, 20):
        url = f"https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start={j}&type=T"
        response = requests.get(url, headers=head)
        douban_text = response.text
        tree = etree.HTML(douban_text)
        li_novel = tree.xpath("//ul[@class='subject-list']/li")  # 获取所有ul标签下的li标签内容

        for i in li_novel:  # 遍历所获取的所有li标签
            url_img = "".join(i.xpath("div[1]/a/img/@src"))       # 获取图片的url,再次进行爬取操作
            img_response = requests.get(url_img, headers=head)
            img_content = img_response.content
            global pic_name

            with open(f"./public/{pic_name}.jpg", "wb") as fp:
                fp.write(img_content)
            pic_name += 1


if __name__ == '__main__':

    if not os.path.exists("./public"):
        os.mkdir("./public")

    tu()

    pass

输出:会将获取到的图片放进文件夹中

 

二、爬虫四步走

1.UA伪装

        还是用上次的随机生成伪装,大部分情况下都可以使用这个方法

import requests
import fake_useragent
from lxml import etree
import os.path

head = {
    "User-Agent": fake_useragent.UserAgent().random
}

 

2.获取url

        在该界面按f12进入检查界面,若是检查界面没东西的话就刷新网页,然后往上翻到第一个,复制url粘贴到pycharm即可

 

3.发送请求

        流水的url,铁打的发送请求。

 response = requests.get(url, headers=head)

 

4.获取响应数据进行解析并保存

        上一篇文章讲过了用,etree.HTML解析网页,再用xpath获取标签内容。本次使用的也是这个方法

        右击书的封面图片即可找到所在标签,如图      

 

  • 就可以通过循环ul标签下的li标签去获取每一本书的图片
  • 而这个图片其实也是一个网页url,因为点击图片链接就会跳转到那张图片,
  • 那么我们就可以对图片再次进行请求和获取操作
  • 在这里略有不同的是,图片,音频之类的信息使用二进制数据保存的,所以这里使用.content的方法去解析数据。
  • 因为每一个图片都是一个单独的文件,所以这里使用with open去储存图片,pic_name用来给图片命名。
pic_name = 0


def tu():
    for j in range(0, 100, 20):
        url = f"https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start={j}&type=T"
        response = requests.get(url, headers=head)
        douban_text = response.text
        tree = etree.HTML(douban_text)
        li_novel = tree.xpath("//ul[@class='subject-list']/li")  # 获取所有ul标签下的li标签内容

        for i in li_novel:  # 遍历所获取的所有li标签
            url_img = "".join(i.xpath("div[1]/a/img/@src"))       # 获取图片的url,再次进行爬取操作
            img_response = requests.get(url_img, headers=head)
            img_content = img_response.content
            global pic_name

            with open(f"./public/{pic_name}.jpg", "wb") as fp:
                fp.write(img_content)
            pic_name += 1

 

         最后,创建个新的文件夹去保存获取到的所有图片。

if __name__ == '__main__':


    #如果当前工作目录下不存在名为public的文件夹,则创建一个新的public文件夹。

    if not os.path.exists("./public"):   
        os.mkdir("./public")

    tu()

    pass
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃什么芹菜卷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值