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项目之站长素材爬取相关推荐
- scrapy实战项目(简单的爬取知乎项目)
本项目实现了对知乎用户信息的爬取,并没有用数据库等,只是简单地用一些提取了一些字段然后存储在了一个csv文件中,但是同样可以实现无线爬取,理论上可以实现万级数据的爬取(当然取决于网速了) 其实想爬取知 ...
- Python爬虫实战一之爬取糗事百科段子
点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...
- [day4]python网络爬虫实战:爬取美女写真图片(Scrapy版)
l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.Scrapy简介 4. ...
- 利用Python进行百度文库内容爬取(二)——自动点击预览全文并爬取
本文是衔接上一篇:<利用Python进行百度文库内容爬取(一)>. 上回说到我们在对百度文库进行爬虫时,需要模拟手机端来进行登录,这样固然可以对文章进行爬取,但是很多时候并不是非常智能的翻 ...
- Python爬虫【二】爬取PC网页版“微博辟谣”账号内容(selenium同步单线程)
专题系列导引 爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集 课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...
- Python爬虫【四】爬取PC网页版“微博辟谣”账号内容(selenium多线程异步处理多页面)
专题系列导引 爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集 课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...
- Python爬虫【三】爬取PC网页版“微博辟谣”账号内容(selenium单页面内多线程爬取内容)
专题系列导引 爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集 课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...
- python微信爬取教程_[python]微信公众号文章爬取
[python]微信公众号文章爬取 需求 爬取一些微信公众号的文章 数据来源 1.搜狗微信搜索,可以搜索微信公众号文章,但只能显示该公众号最近十篇的文章 2.通过个人微信公众号中的素材管理,查看其他微 ...
- Python集成scrapy和selenium爬取苏宁图书
Python集成scrapy和selenium爬取苏宁图书 环境:python3.6 pycharm2018.1.3 前言 本人渣渣一枚,为爬虫苏宁图书获取数据,将获得的数据保存在MangoDB中,现 ...
最新文章
- kudu接受kafka消息_Kafka 在车好多
- 英文首字母排序mysql_利用MySQL数据库来处理中英文取首字母排序
- Alpine?Distroless?Busybox?到底谁才是容器镜像的瑞士军刀?
- java callable 详解_Java多线程详解(七)------Callable接口介绍
- 【修饰符】四种访问修饰符和各自的权限
- java8 function 固定0_Java8特性使用Function代替分支语句
- bzoj 3027: [Ceoi2004]Sweet(母函数+组合数)
- SAStruts中文文档
- php将一个日期字符串转换成举例来说当前的,PHP将一个日期字符串转换成举例来说当前的天数...
- 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore.nativeNewInstance
- 军用设备环境试验方法高温振动试验标准
- uniapp微信小程序video视频监听播放时间
- 基于PHP物流网站信息管理系统
- 微分方程求解二(偏微分方程求解)
- 斐讯路由做php,斐讯K2路由双WiFi网速叠加教程
- two sample ttest paired ttst
- python汇率转换
- rwd是什么意思_为什么RWD看起来像RWD
- 关于无线传感器网络(WSN)的学术会议和期刊
- coursera和udacity_三大MOOC平台Coursera、EdX和Udacity的可用性比较研究
热门文章
- php response响应,9. 响应 (Response)
- mitmproxy抓包 | Python疑难测试场景mock实战(四)
- 紫书 团队队列(队列)
- NOIP 2010 引水入城
- FPGA中计数器设计探索
- !!!!Linux系统开发 系列 4 进程资源 环境 fork()子进程 wait() waitpid()僵尸 孤儿进程...
- android图片的缩放、圆角处理
- MyBatis + MVC 获取 UI 参数的几种方法(二)
- C#中通过代码控制IIS服务重启
- python3 time datetime相关操作