xpath

爬虫的具体步骤

1、所需要数据对应的真实URL地址
2、找到对应的请求方式
3、使用第三方包,构造请求(注意需要进行伪装,headers的伪装,最重要的是需要进行浏览器伪装–User-Agent)
4、发送请求
5、收到响应之后,需要对响应体数据进行解析(普通的页面text,如果是多媒体文件是content)
6、将拿到的页面或者多媒体文件按照需求进行提取(正则)
7、将获取到的目标文件进行保存

html 与xml

作用
XML可扩展标记语言XML 被设计用来传输和存储数据,它的焦点内容是数据
HTML超文本标记语言显示数据以及如何更好的显示数据
HTML_DOM文档对象模型可以通过html_dom,访问所有的HTML元素

xml实例以及部分知识点

<bookstore>
先辈(bookstore)--后代(price,year)
<book category="COOKING">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>
#详情请移步W3C,讲的完善
每一个元素以属性都有一个父类
元素节点可以有零个,一个或者多个子
同胞拥有相同的父节点
先辈某节点的父,父的父。。。。。
后代某一个节点的子,子的子。。。。。

路径表达式

表达式说明
/代表从根节点选取
//从当前文档的任何位置找起,只要符合节点就行
@选取的是属性
.当前节点
当前节点的父节点

举例:

从根节点找起:/html/body/div[9]/div/ul/li[3]/a
/html选取的是根元素html
//div选取的是所有的div子元素,不考虑节点在文档中的位置
div//span选择属于div元素的后代中所有的span元素,不管它位于div标签下的任何位置
//ul[@class=‘easyList’]相关的表达式的配合使用
//@class选择名为class的属性

xpath etree的作用

str1 = '''
<div>this is a div
'''

doc = etree.HTML(str1)
str2 = etree.tostring(doc)
print(str2)

展示:
b'<html><body><div>this is a div\n</div></body></html>'

注意点:
1、tostring()转换的字符串是bytes类型
2、lxml可以补齐缺失的HTML标签,还可以自动添加html 和 body标签

测试

不建议直接在网页上直接爬取,因为很多时候第一次不可能成功爬取,次数多了就会出现403错误,这是最头疼的,所以要进行测试在运用

import requests

url = 'https://hz.qk365.com/'#需要爬取的网页地址
html_str = requests.post(url=url).text 
print(html_str)
#拿到该页面下的所有html内容,然后复制所有的东西到新的一个py文件里建个字符串然后全部粘贴进去合起就可以开始测试

#记住url后加上header内容(User-Agent),莫瞎裸奔,一奔就被捉住隔离(坏笑)

import requests
from lxml import etree
html_str='''粘贴过来的内容'''
html_doc=etree.HTML(html_str)#记住要转,html_str就是自己命名的粘贴过来字符串名字
ret = html_doc.xpath('//span/i/text()')
print(ret)

注意点:
1、text()获取标签扩起来的内容,即i标签下的所有文本内容
2、xpath返回的数据类型是一个列表
3、尽量次数少的爬取网页。鬼知道下一次就没有被发现

爬取实例见下贴

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值