首页 > 编程语言 >【转】如何利用Python爬虫爬取网页中图片(成功实现自动翻页至最后一页)

【转】如何利用Python爬虫爬取网页中图片(成功实现自动翻页至最后一页)

时间:2022-10-19 19:44:18浏览次数:78  
标签:content 翻页 Python res self jpg next 爬取 url

【原文】https://blog.csdn.net/weixin_65423581/article/details/122533646

  • 1.模块的使用

  • (1).random模块:

主要是为了产生随机数作为写入jpg的名称(这里其实可以用字典形式表示之后再提取图片主要内容作为不同jpg的名称)。

  • (2).requests模块:

通过请求获取网页数据。

  • (3)lxml模块:

主要用来从网页数据中通过Xpath方法查找自己想要的数据(这里etree会报错但是能正常使用不用管)。

  • 2.主要爬虫思路

    • (1).首先要有一个start_url作为第一次网页数据的获取

    • (2).通过Xpath方法获取数据中jpg的URL

    • (3).同时通过Xpath方法获取’下一页‘的URL作为next_url

    • (4).进入循环

  • 3.代码如下:

import random
import requests
from lxml import etree
class Jpgspirer:
    def __init__(self):
        self.header = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
            "cookie": "Hm_lvt_86200d30c9967d7eda64933a74748bac = 1642225685, 1642344194;t = 244406d180636c9c3bf6b1439e8d8351;r = 1418;Hm_lpvt_86200d30c9967d7eda64933a74748bac = 1642344258"
        }
 
    def res(self,start_url):#获取网页响应数据
        res=requests.post(start_url,headers=self.header)
        return res.content.decode()
 
    def maincontent(self,content):#获取jpg的url
        html=etree.HTML(content)#将html数据规范化便于查找
        ret=html.xpath('//div[@class=\"egeli_pic_li\"]//img/@src')#查找jpg-URL
        return ret
 
    def next_url(self,content):#获取下一页URL
        html=etree.HTML(content)#将数据规范化
        ret=html.xpath('//a[@class=\"next_p\"]/@href')#查找next_url
        if len(ret)>0:  #判断next_url是否存在,若不存在返回None值以便结束循环
            return ret[0]
        else:
            return None
    def save(self,jpglist):# 将获取到的每个jpg写入到当前文件夹
        for item in jpglist:
            filename = "{}.jpg"
            fname = filename.format(random.uniform(1, 1000))
            res = requests.get(item, headers=self.header)
            with open(fname,'wb') as file:
                file.write(res.content)
            print('保存成功')
 
    def run(self,start_url):   #实现主要逻辑
        content=self.res(start_url)
        jpg_list=self.maincontent(content)
        next_url=self.next_url(content)
        self.save(jpg_list)     #start_url数据获取并得到next_url
        while next_url!=None:  #进入循环
            content=self.res(next_url)
            jpg_list.extend(self.maincontent(content))
            next_url=self.next_url(content)
            self.save(jpg_list)
 
if __name__ == '__main__':
    Spider=Jpgspirer()
    Spider.run(' https://mm.enterdesk.com/')#传入start_url
 

标签:content,翻页,Python,res,self,jpg,next,爬取,url
From: https://www.cnblogs.com/aixiu/p/16807497.html

相关文章