首先声明,自己算是小白,还是偏感性女性思维,刚接触python没有多久,所以以下文字中有不专业的地方,请多多指出,不吝赐教。我是学了正则和bs4然后学的xpath,其实我开始并不想做笔记,但是发现自己学完了之后就全忘记了,特意做一下笔记。我着重讲实例。
求点赞、评论、关注!!!!!!
可以先看一下xpath的基本逻辑:
#xpath解析原理:
-1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中
-2.调用etree对象的xpath方法结合着xpath表达式实现标签的定位和内容的捕获
#环境的安装:
-pip install lxml
#如何实例化一个etree对象 :from lxml import etree
-1.将本地的html文档中的源码数据加载到etree对象中:
etree.parse(filePath)
-2.可以将从互联网上获取的源码数据加载到该对象中:
etree.parse(filePath)
#xpath表达式
-/:表示从根节点开始定位,表示的是一个层级
-//表示多个层级,可以表示从任意位置开始定位
-属性定位://div[@class='song'] tag[@attrName='attrValue']
-索引定位://div[@class='song']/p[3] 索引是从1开始的
-取文本:/text()
-取属性:/@attrName ==>img/@src
1.第一个案例:爬取链家的二手房信息,要求能输出二手房页面的二手房标题和价钱
--先导入模块,发起网络请求,得到这种二手房列表界面,然后把网页etree对象化,再调用xpath方法
import requests
from lxml import etree
if __name__=='__main__':
# 需求:爬取链家的二手房信息
# 1.爬取页面源码数据
url1='https://sh.lianjia.com/ershoufang/pudong/'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}
response=requests.get(url1,headers)
lianjia_text=response.text
--注意看xpath里面怎么写的,你看一下网页的源代码,会发现这些二手房的一套信息全都以li标签的形式存储,放在了ul的标签里面 。
# 数据解析
tree=etree.HTML(lianjia_text)
print(lianjia_text)
li_list=tree.xpath('//ul[@class="sellListContent"]/li') 这是一个列表,里面存放着所有的li标签