# 项目需求:利用Xpath 获取段子的内容和作者 https://ishuo.cn/joke
import requests
from lxml import etree
# 指定url
url='https://ishuo.cn/joke'
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
# 发起页面请求
response=requests.get(url=url,headers=headers)
# 获取页面内容
page_text= response.text
# 数据解析
tree=etree.HTML(page_text)
# 获取所有的内容标签 用插件先测试语法
# xpath()函数返回的是列表,列表元素是element对象,可以继续调用xpath函数继续解析
# ./ 表示标签下
li_list = tree.xpath('//*[@id="list"]/ul/li')
#持久化存储
with open('./duanzi.txt','w',encoding='utf-8') as f:
for li in li_list:
content = li.xpath('./div[@class="content"]/text()')[0]
title = li.xpath('./div[@class="info"]/a/text()')[0]
f.write(title+":"+content+"\n\n")
print('完成')
小结:
- xpath返回的是列表,索引取值
- 内容来源于网络用etree.HTML(),本地用etree.parse()
- 生成树之后xpath解析之后是element对象,还可以继续xpath
- 注意xpath常用语法编写,可以利用插件先测