案例:爬取某二手房信息
Xpath实例化一个etree对象两种方法:from lxml import etree
-1.将-本地的html文档中-的源码数据加载到etree对象中:
etree.parse(filePath)
-2.可以将从-互联网-上获取的源码数据加载到该对象中:
etree.HTML('page_text')
- xpath表达式:
- /:表示的是从根节点开始定位,表示的是一个层级
- //:表示的是多个层级;或可以表示从任意位置开始定位
-属性定位:
//div[@class="song"] tag[@attrName="attrValue"]
- 索引定位:
//div[@class="song"]/p[3] 索引是从1开始。
- 取文本:
- /text() 获取的是标签中直系的文本内容
- //text() 标签中非直系的文本内容(所有的文本内容)
-取属性:
/@attrName img/@src
源码:
import requests
from lxml import etree
#UA伪装
headers={
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
}
#爬取到页面源码数据
url='输入自己要爬取的网址信息'
page_text=requests.get(url=url,headers=headers).text
#页面数据解析
tree=etree.HTML(page_text)
#返回一个列表数据
div_list=tree.xpath('//section[@class="list"]/div')
#文件存储
fp=open('58.text','w',encoding='utf-8')
#逐个数据进行存储
for div in div_list:
#局部解析 ./:当前标签下 //:从任意位置开始定位
title=div.xpath('.//h3/text()')[0]
print(title)
fp.write(title+'\n\n')
实现效果:
保存到文件效果