欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python项目之站长素材爬取

发布时间:2025/3/15 python 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python项目之站长素材爬取 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

一、学习资源

二、知识点介绍

1、xpath使用

​ 2、xpath基本语法

 3、案例演示

三、项目详细讲解 

1、分析

 2、步骤

        (1)请求对象定制

        (2)获取响应数据

        (3)下载数据

 四、源代码


一、学习资源

        尚硅谷Python爬虫教程小白零基础速通(含python基础+爬虫案例)_哔哩哔哩_bilibili   这位老师讲的很有激情,并知识点和逻辑清晰,强烈推荐

二、知识点介绍

1、xpath使用

安装详情请参考往期文章:

xpath安装与下载_前景-CSDN博客一、下载安装连接如下链接:https://pan.baidu.com/s/1jYaugFBjxxYyXJWCQ_R5Rw提取码:9d5u二、安装①打开chrome浏览器②点击右上角小圆点③更多工具④扩展程序⑤拖拽xpath文件插件到扩展程序中⑥如果crx文件失效,需要将后缀修改为zip⑦再次拖拽⑧关闭浏览器重新打开⑨ctra+shift+x⑩出现小黑框...https://blog.csdn.net/qq_41404557/article/details/122567674安装lxml库_前景-CSDN博客一、找到python的安装位置二、打开命令行窗口,进入文件夹的位置,安装到scripts文件夹里面如果出现如下图,则安装成功https://blog.csdn.net/qq_41404557/article/details/122567976

 2、xpath基本语法

 3、案例演示

# coding=utf-8 from lxml import etree#xpath解析 #(1)解析本地文件 etree.parse #(2)解析服务器文件 response.read().decode('utf-8')****** etree.HTML()#xpath解析本地文件 tree = etree.parse('070_解析_xpath的基本使用.html')#tree.xpath('xpath路径')#查找ul下面的li #li_list = tree.xpath('//ul/li/text()')#查找所有有id的属性的li标签 #text()获取标签中的内容 #li_list = tree.xpath('//ul/li[@id]/text()')#找到id为l1的li标签 注意引号的问题 单引号里面的字符串要加双引号 #li_list = tree.xpath('//ul/li[@id="l1"]/text()')#查找到id为l1的li标签的class的属性值 # li = tree.xpath('//ul/li[@id="l1"]/@class')#查询id中包含l的li标签 #li_list = tree.xpath('//ul/li[contains(@id,"l")]/text()')#查询id的值以l开头的li标签 #li_list = tree.xpath('//ul/li[starts-with(@id,"c")]/text()')#查询id为l1和class为c1的 #li_list = tree.xpath('//ul/li[@id="l1" and @class="c1"]/text()')li_list = tree.xpath('//ul/li[@id="l1"]/text() | //ul/li[@id="l2"]/text()') #判断列表的长度 print(li_list) print(len(li_list))

三、项目详细讲解 

1、分析

          ①首先要获取url,但是因为要获取前十页的数据,url是一个变量,通过对网页的检查可以发现网页的url有规律。

        

 2、步骤

        (1)请求对象定制

               解决了url的问题之后,请求对象的定制就变得简单了,就是把之前的内容进行了封装

        (2)获取响应数据

                相应的获取响应数据也是把之前的代码进行封装

        

        (3)下载数据

                   下载图片需要用到urllib库,此时需要图片的地址和文件的名字

                

                首先解析获取到的服务器文件,然后通过xpath去查找图片的地址和文件的名字

                然后通过遍历的方式下载图片

 

         文件内容:

 四、源代码

# coding=utf-8 #(1)请求对象的定制 #(2)获取网页源码 #(3)下载#需求 下载的是前十页的图片 #https://sc.chinaz.com/tupian/qinglvtupian.html #https://sc.chinaz.com/tupian/qinglvtupian_page.html import urllib.request from lxml import etreedef create_request(page):#请求对象定制if (page == 1):url = 'https://sc.chinaz.com/tupian/qinglvtupian.html'else :url = 'https://sc.chinaz.com/tupian/qinglvtupian_'+str(page)+'.html'headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}request = urllib.request.Request(url=url,headers=headers)return requestdef get_content(request):#获取网页源码response = urllib.request.urlopen(request)content = response.read().decode('utf-8')return contentdef down_load(content):#下载#下载图片#urllib.request.urlretrieve('图片地址','文件的名字')tree = etree.HTML(content)#解析服务器文件name_list = tree.xpath('//div[@id="container"]//a/img/@alt')#一般设计图片的网站都会进行懒加载 所以这里的图片地址为src2src_list = tree.xpath('//div[@id="container"]//a/img/@src2')for i in range(len(name_list)):name = name_list[i]src = src_list[i]url = 'https:' + srcurllib.request.urlretrieve(url=url,filename='./loveImg/' +name + '.jpg')if __name__ == '__main__':start_page = int(input('请输入起始页码'))end_page = int(input('请输入结束页码'))for page in range(start_page,end_page+1):#(1)请求对象定制request = create_request(page)#获取网页源码content = get_content(request)#(3)下载down_load(content)

         整体思路可以参考往期文章:

爬虫项目之豆瓣电影排行榜前10页_前景-CSDN博客豆瓣电影排行榜前十页数据抓取(详细分析讲解)https://blog.csdn.net/qq_41404557/article/details/122600743

总结

以上是生活随笔为你收集整理的python项目之站长素材爬取的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。