xpath解析:最常用且最便捷高效的一种解析方式,通用性。

  • xpath解析原理:

    • 1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中。
    • 2.调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获。
  • 环境的安装:
    • pip install lxml
  • 如何实例化一个etree对象:from lxml import etree
    • 1.将本地的html文档中的源码数据加载到etree对象中:
      etree.parse(filePath)
    • 2.可以将从互联网上获取的源码数据加载到该对象中
      etree.HTML(‘page_text’)
    • xpath(‘xpath表达式’)
  • xpath表达式:
    • /:表示的是从根节点开始定位。表示的是一个层级。
    • //:表示的是多个层级。可以表示从任意位置开始定位。
    • 属性定位://div[@class=‘song’] tag[@attrName=“attrValue”]
    • 索引定位:索引从1开始的。
    • 取文本:
      • /text() 获取的是标签中直系的文本内容
      • //text() 标签中非直系的文本内容(所有的文本内容)
    • 取属性:
      /@attrName ==>img/src

需求一:爬取58二手房信息 https://bj.58.com/ershoufang/

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
from lxml import html
etree = html.etree
#需求:爬取58二手房中的房源信息
if __name__ == "__main__":headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}#爬取到页面源码数据url = 'https://bj.58.com/ershoufang/'page_text = requests.get(url=url,headers=headers).text#数据解析tree = etree.HTML(page_text)#存储的就是li标签对象li_list = tree.xpath('//div[@class="property"]/a')fp = open('58.txt','w',encoding='utf-8')for li in li_list:#局部解析title = li.xpath('./div[2]//h3/text()')[0] + li.xpath('./div[2]/div[2]/p/span/text()')[0] + "万"print(title)fp.write(title+'\n')


需求二:爬取4k网图片 http://pic.netbian.com/4kmingxing/

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#需求:解析下载图片数据 http://pic.netbian.com/4kmeinv/
import requests
from lxml import html
etree = html.etree
import os
if __name__ == "__main__":headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}# 创建一个文件夹if not os.path.exists('./picLibs'):os.mkdir('./picLibs')url = 'http://pic.netbian.com/4kmingxing/index_%d.html'for pageNum in range(1,8):#对应页码的urlnew_url = format(url%pageNum)response = requests.get(url=new_url,headers=headers)page_text = response.text#数据解析:src的属性值  alt属性tree = etree.HTML(page_text)li_list = tree.xpath('//div[@class="slist"]/ul/li')for li in li_list:img_src = 'http://pic.netbian.com'+li.xpath('./a/img/@src')[0]img_name = li.xpath('./a/img/@alt')[0]+'.jpg'#通用处理中文乱码的解决方案img_name = img_name.encode('iso-8859-1').decode('gbk')# print(img_name,img_src)#请求图片进行持久化存储img_data = requests.get(url=img_src,headers=headers).contentimg_path = 'picLibs/'+img_namewith open(img_path,'wb') as fp:fp.write(img_data)print(img_name,'下载成功!!!')

python数据解析——xpath爬取文字和图片相关推荐

  1. Python爬虫:Xpath爬取网页信息(附代码)

    Python爬虫:Xpath爬取网页信息(附代码) 上一次分享了使用Python简单爬取网页信息的方法.但是仅仅对于单一网页的信息爬取一般无法满足我们的数据需求.对于一般的数据需求,我们通常需要从一个 ...

  2. Python爬虫实战之爬取网站全部图片(一)

    Python爬虫实战之爬取网站全部图片(二) Python爬虫实战之通过ajax获得图片地址实现全站图片下载(三) 一.获得图片地址 和 图片名称 1.进入网址之后 按F12  打开开发人员工具点击e ...

  3. python + selenium +pyquery 爬虫 爬取 1688详情图片 阿里巴巴详情图片 与标题 下载图片并进行压缩

    python + selenium +pyquery 爬虫  爬取 1688详情图片 阿里巴巴详情图片 与标题 下载图片并进行压缩 用到的库和源码下载地址 需要用到chromedriver  包含wi ...

  4. python提取图片文字视频教学_Python学习第七天之爬虫的学习与使用(爬取文字、图片、 视频)...

    一.爬虫记得基本方法 1.1 爬虫概述 ​网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使 ...

  5. python爬取文字和图片_Python学习第七天之爬虫的学习与使用(爬取文字、图片、 视频)...

    [toc] 一.爬虫记得基本方法 1.1 爬虫概述 ​ 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. ...

  6. python超详细零基础 bs4解析之爬取唯美图片

    文章目录 前言 前言 本篇文章主要介绍使用bs4解析来爬取某网站上的唯美高清大图,涉及到的零碎知识较多,详细易懂,适合新手小白爬虫入门. 思路如下: ①拿到主页面的源代码,然后提取到子页面的链接地址h ...

  7. python爬虫:解决爬取文字时写入出现的NBSP(空格)现象

    当我们爬取文字存储到txt文本时出现NBSP现在的解决方法.把空格去掉用str(remove).replace(u'\xa0', '')去解决 电影名称: 肖申克的救赎[NBSP] 电影名称: 霸王别 ...

  8. Python-爬虫(xpath数据解析,爬取信息实战)

    文章目录 1.xpath常见筛选方式 谓语 2.爬取信息实战 1.xpath常见筛选方式 测试网页源代码 <!DOCTYPE html> <html lang="en&qu ...

  9. python爬取文字和图片_python爬虫--xpath结合re同时爬取文字与图片

    还是老家的旅游网址:http://www.patour.cn/site/pananzxw/tcgl/index.html,将这些特产的图片及其介绍都爬取下来! 源码: 1 # -*- coding:u ...

最新文章

  1. 语义分割--Dilated Residual Networks 之转载
  2. 新买的电脑怎么装系统_如何装一台性价比的电脑主机——老程带你了解怎么装电脑...
  3. 《高性能JavaScript》第三章 DOM编程
  4. pcb 布线电容 影响延时_信号在PCB走线中传输时延
  5. dapr微服务.net sdk入门
  6. IntelliJ IDEA for Mac 如何在当前的普通Java项目中创建新的模块/添加模块/创建模块
  7. KMP算法的java实现
  8. pycharm中的settings没有latest version_k8s集群中pod镜像版本检查
  9. docker环境搭建redis-cluster集群(多台机器)
  10. golang 目录分隔符号_Golang 从0到1之任务提醒(一)
  11. AndroidStudio新建项目报错build failed
  12. 在consul上注册web服务
  13. 重庆北大青鸟校区【学员心声】:学习是我们前进的动力
  14. 计算机内图片怎么自定义排序,win10系统设置图片文件自定义排序的图文教程
  15. OAuth2.0的refresh token
  16. 学做智能车--电磁探究篇
  17. STRAIGHT特征提取算法学习
  18. JVM内存模型(一篇足以)
  19. HZNU2012图解
  20. Win10图片打开方式没有“Windows照片查看器”

热门文章

  1. sql 不使用引号、使用单引号或双引号的区别
  2. Node.js 调用 dll动态库 以华旭身份证阅读器为例
  3. select 的使用
  4. 英语聊天室,以及在线翻译
  5. java编写出一个小船的代码
  6. 【小技巧】广告弹窗——ff新推荐
  7. 量子粒子群算法实现天线阵列优化
  8. 自定义View:常见抽奖转盘的实现
  9. GGhost一键恢复09.03.08
  10. android拨号器的