今天说一下关于爬取数据解析的方式---->XPATH,XPATH是解析方式中最重要的一种方式

1.安装:pip install lxml

 2.原理

  1. 获取页面源码数据

  2.实例化一个etree的对象,并且将页面源码数据加载到该对象中

  3.调用该对象的xpath方法进行指定标签的定位

  4.注意:xpath函数必须结合着xpath表达式进行标签定位和内容捕获

说了也不明白,直接上例子!!!!

1.解析58二手房的相关数据

#引用requests
import requests
#引用lxml
from lxml import etree
#地址
url = 'https://bj.58.com/ershoufang/sub/l16/s2242/?utm_source=market&spm=u-2d2yxv86y3v43nkddh1.bdpcpz_bt&PGTID=0d30000c-0000-1139-b00c-643d0d315a04&ClickID=1'
#伪装的请求头,证明我是浏览器
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
}
#获取当前整个页面
page_text = requests.get(url,headers=headers).text
#作用于当前页面之后再解析数据
tree = etree.HTML(page_text)
#//ul[@class="house-list-wrap"]/li这就是lxml解析,//代表前面的层次
li_list = tree.xpath('//ul[@class="house-list-wrap"]/li')
# print(li_list)#得到每一个<Element li at 0x202a8c62288>这玩意
#再次循环
for li in li_list:
#再次解析得到准确的数据!!!
title = li.xpath('./div[2]/h2[1]/a/text()')[0]
print(title)

2.福利福利!!!!下载彼岸图网中的图片数据

import os
import requests
from lxml import etree
#这里注意,这是python3中的写法!!!
import urllib.request
url = 'http://pic.netbian.com/4kmeinv/'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
}
#二话不说直接发情再说
response = requests.get(url,headers=headers) #如果当前根目录下没有imgs文件夹,就创建!!!
if not os.path.exists('./imgs'):
os.mkdir('./imgs') #得到请求数据
page_text = response.text
#作用当前页面
tree = etree.HTML(page_text)
#lxml解析
li_list = tree.xpath('//div[@class="slist"]/ul/li')
#循环得到准确的数据
for li in li_list:
img_name = li.xpath('./a/b/text()')[0]
# 处理中文乱码!不要理解记住就ok
img_name = img_name.encode('ISO-8859-1').decode('gbk')
#拼接完整的地址
img_url = 'http://pic.netbian.com' + li.xpath('./a/img/@src')[0]
#图片的名字
img_path = './imgs/' + img_name + '.jpg'
#这里避免打开文件就用urllib直接写入
urllib.request.urlretrieve(url=img_url,filename=img_path)

3.解析所有城市名称(https://www.aqistudy.cn/historydata/)

import requests
from lxml import etree url = 'https://www.aqistudy.cn/historydata/' headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
} res = requests.get(url=url, headers=headers).text
tree = etree.HTML(res)
city_list = tree.xpath('//div[@class="bottom"]/ul/li/a/text() | //div[@class="bottom"]/ul/div[2]/li/a/text()') # 逻辑运算符,这里 | 表示或的关系
city = ''.join(city_list)

4.煎蛋网的爬去图片

# 煎蛋网图片
import requests
from lxml import etree
#base对于加魔数据进行解密
import base64
import os
import urllib.request if not os.path.exists('./jiandan'):
os.mkdir('./jiandan') headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
}
url = 'http://jandan.net/ooxx' res1 = requests.get(url, headers=headers).text
tree = etree.HTML(res1) span_list = tree.xpath('//span[@class="img-hash"]/text()')
for span_hash in span_list:
#对于加密数据进行解密,编码是utf-8并且拼接完整的url
img_url = 'http:' + base64.b64decode(span_hash).decode('utf8')
#得到具体的数据
img_data = requests.get(url=img_url, headers=headers).content filepath = './jiandan/' + img_url.split('/')[-1]
urllib.request.urlretrieve(url=img_url, filename=filepath)
print(filepath, '下载完成!') print('over')

5.爬去简历模板

import requests
from lxml import etree
import random
import os headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
} if not os.path.exists('./jianli'):
os.mkdir('./jianli')
#爬去前4页的数据
for i in range(1, 4):
if i == 1:
#第一页数据
url = 'http://sc.chinaz.com/jianli/free.html'
else:
#不是第一页的数据,进行数据的拼接
url = 'http://sc.chinaz.com/jianli/free_%s.html' % (i) response = requests.get(url=url, headers=headers)
#字符编码改一下,否则出现这种问题:求职电子版简历免费下载 下载完成!
response.encoding = 'utf8' res = response.text tree = etree.HTML(res) a_list = tree.xpath('//a[@class="title_wl"]')
for a in a_list:
name = a.xpath('./text()')[0]
jl_url = a.xpath('./@href')[0] response = requests.get(url=jl_url, headers=headers)
response.encoding = 'utf8'
res1 = response.text
tree = etree.HTML(res1)
download_url_list = tree.xpath('//div[@class="clearfix mt20 downlist"]/ul/li/a/@href')
download_url = random.choice(download_url_list) res3 = requests.get(url=download_url, headers=headers).content filepath = './jianli/' + name + '.rar'
#如果上边是content,写入的时候记得’wb'
with open(filepath, 'wb') as f:
f.write(res3)
print(name, '下载完成!') print('over')

6.站长直接图片下载,图片懒加载

import requests
from lxml import etree
import os
import urllib
import urllib.request if not os.path.exists('./tupian'):
os.mkdir('./tupian') url = 'http://sc.chinaz.com/tupian/' headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
} response = requests.get(url=url, headers=headers)
response.encoding = 'utf8'
res = response.text
tree = etree.HTML(res)
url_list = tree.xpath('//div[@id="container"]/div/div/a/img/@src2') # img标签是伪属性src2,当图片滚动到视野内时变为 src for url in url_list:
filepath = './tupian/' + url.rsplit('/', 1)[-1]
urllib.request.urlretrieve(url, filepath)
print(filepath, '下载完成!') print('over')

爬虫--XPATH解析的更多相关文章

  1. 【XPath Helper:chrome爬虫网页解析工具 Chrome插件】XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插件网

    [XPath Helper:chrome爬虫网页解析工具 Chrome插件]XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插 ...

  2. 爬虫系列二(数据清洗--->xpath解析数据)

    一 xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML 文档中进行导航 XPath 包 ...

  3. 爬虫的三种解析方式(正则解析, xpath解析, bs4解析)

    一 : 正则解析 : 常用正则回顾: 单字符: . : 除换行符以外的所有字符 [] : [aoe] [a-w] 匹配集合中任意一个字符 \d : 数字 [0-9] \D : 非数字 \w : 非数字 ...

  4. 爬虫——网页解析利器--re & xpath

    正则解析模块re re模块使用流程 方法一 r_list=re.findall('正则表达式',html,re.S) 方法二  创建正则编译对象 pattern = re.compile('正则表达式 ...

  5. python爬虫三大解析库之XPath解析库通俗易懂详讲

    目录 使用XPath解析库 @(这里写自定义目录标题) 使用XPath解析库 1.简介   XPath(全称XML Path Languang),即XML路径语言,是一种在XML文档中查找信息的语言. ...

  6. python爬虫使用xpath解析页面和提取数据

    XPath解析页面和提取数据 一.简介 关注公众号"轻松学编程"了解更多. XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.X ...

  7. 爬虫-数据解析-xpath

    xpath 解析 模块安装 : pip install lxml xpath的解析原理 实例化一个etree类型的对象,且将页面源码数据加载到该对象中 需要调用该对象的xpath方法结合着不同形式的x ...

  8. 爬虫——xpath

    1.什么是xpath? Xpath,全称XML Path Language,即XML路径语言.它是一门在XML之后查找信息的语言,也同样适用于HTML文档的搜索.在做爬虫的时候,我们用XPath语言来 ...

  9. Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段

    上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写 ...

随机推荐

  1. 团体程序设计天梯赛L2-009 抢红包 2017-03-22 19:18 131人阅读 评论(0) 收藏

    L2-009. 抢红包 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 没有人没抢过红包吧-- 这里给出N个人之间互相发红包.抢 ...

  2. 什么是 Java 内存模型,最初它是怎样被破坏的?(转载)

    活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM)的公开建议.原始 JMM 中有几个严重缺陷,这导致了一些难度高得惊人的概念语 ...

  3. 洛谷P1501 [国家集训队]Tree II(打标记lct)

    题目描述 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原有的 ...

  4. Android-ListView-(BaseAdapter初步)

    在Android中就提供了专门列表显示条目的控件,ListView控件,ListView控件不是一次性加载全部数据,他是只加载用户在屏幕看得到的数据,当用户滑动的过程中在去加载新的数据,同时会自动销毁 ...

  5. 纯分享scp协议如何工作

    scp协议是什么, wiki上说: Secure copy or SCP is a means of securely transferring computer files between a lo ...

  6. Visual Studio Error

    Visual Studio Error 注意:文中所有“系统”用词,均指Windows Console操作系统IO Debug Error 错误类型 #0表示调用约定错误 可以考虑在指针前面加上_st ...

  7. [javascript]模块化&命名污染—from 编程精解

    最近看了编程精解里面的模块化一章,很受启发. /****************/ 在开发的实际过程中,根据页面或者逻辑布局,js代码可以按照功能划分为若干个区块:数据交互.表单验证.页面布局等等模块 ...

  8. PXE-cobbler 无人值守装机

    Cobbler  PXE 自动安装系统(CentOS-7.2) 第一步:系统环境准备 1.查看系统版本与内核 2.关闭防火墙 3.关闭selinux 第二步:安装cobbler 与环境相关组件 1.下 ...

  9. OI数据结构&&分治 简单学习笔记

    持续更新!!! [例题]简单题(K-D tree) 题目链接 线段树 [例题](环上最大连续和) 给定一个长度为n的环形序列A,其中A1与A_n是相临的,现在有q次修改操作,每次操作会更改其中一个数, ...

  10. 二十三、MongoDb 数据库介绍、安装、启动和连接(非关系型数据库)

    1.数据库和文件的主要区别 1. 数据库有数据库表.行和列的概念,让我们存储操作数据更方便2. 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功 ...