目录

一、学习资源

二、知识点介绍

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项目之站长素材爬取相关推荐

  1. scrapy实战项目(简单的爬取知乎项目)

    本项目实现了对知乎用户信息的爬取,并没有用数据库等,只是简单地用一些提取了一些字段然后存储在了一个csv文件中,但是同样可以实现无线爬取,理论上可以实现万级数据的爬取(当然取决于网速了) 其实想爬取知 ...

  2. Python爬虫实战一之爬取糗事百科段子

    点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...

  3. [day4]python网络爬虫实战:爬取美女写真图片(Scrapy版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.Scrapy简介 4. ...

  4. 利用Python进行百度文库内容爬取(二)——自动点击预览全文并爬取

    本文是衔接上一篇:<利用Python进行百度文库内容爬取(一)>. 上回说到我们在对百度文库进行爬虫时,需要模拟手机端来进行登录,这样固然可以对文章进行爬取,但是很多时候并不是非常智能的翻 ...

  5. Python爬虫【二】爬取PC网页版“微博辟谣”账号内容(selenium同步单线程)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  6. Python爬虫【四】爬取PC网页版“微博辟谣”账号内容(selenium多线程异步处理多页面)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  7. Python爬虫【三】爬取PC网页版“微博辟谣”账号内容(selenium单页面内多线程爬取内容)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  8. python微信爬取教程_[python]微信公众号文章爬取

    [python]微信公众号文章爬取 需求 爬取一些微信公众号的文章 数据来源 1.搜狗微信搜索,可以搜索微信公众号文章,但只能显示该公众号最近十篇的文章 2.通过个人微信公众号中的素材管理,查看其他微 ...

  9. Python集成scrapy和selenium爬取苏宁图书

    Python集成scrapy和selenium爬取苏宁图书 环境:python3.6 pycharm2018.1.3 前言 本人渣渣一枚,为爬虫苏宁图书获取数据,将获得的数据保存在MangoDB中,现 ...

最新文章

  1. kudu接受kafka消息_Kafka 在车好多
  2. 英文首字母排序mysql_利用MySQL数据库来处理中英文取首字母排序
  3. Alpine?Distroless?Busybox?到底谁才是容器镜像的瑞士军刀?
  4. java callable 详解_Java多线程详解(七)------Callable接口介绍
  5. 【修饰符】四种访问修饰符和各自的权限
  6. java8 function 固定0_Java8特性使用Function代替分支语句
  7. bzoj 3027: [Ceoi2004]Sweet(母函数+组合数)
  8. SAStruts中文文档
  9. php将一个日期字符串转换成举例来说当前的,PHP将一个日期字符串转换成举例来说当前的天数...
  10. 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore.nativeNewInstance
  11. 军用设备环境试验方法高温振动试验标准
  12. uniapp微信小程序video视频监听播放时间
  13. 基于PHP物流网站信息管理系统
  14. 微分方程求解二(偏微分方程求解)
  15. 斐讯路由做php,斐讯K2路由双WiFi网速叠加教程
  16. two sample ttest paired ttst
  17. python汇率转换
  18. rwd是什么意思_为什么RWD看起来像RWD
  19. 关于无线传感器网络(WSN)的学术会议和期刊
  20. coursera和udacity_三大MOOC平台Coursera、EdX和Udacity的可用性比较研究

热门文章

  1. php response响应,9. 响应 (Response)
  2. mitmproxy抓包 | Python疑难测试场景mock实战(四)
  3. 紫书 团队队列(队列)
  4. NOIP 2010 引水入城
  5. FPGA中计数器设计探索
  6. !!!!Linux系统开发 系列 4 进程资源 环境 fork()子进程 wait() waitpid()僵尸 孤儿进程...
  7. android图片的缩放、圆角处理
  8. MyBatis + MVC 获取 UI 参数的几种方法(二)
  9. C#中通过代码控制IIS服务重启
  10. python3 time datetime相关操作