Python爬虫新手村上手指南⑤

XPath解析数据

XPath简介

全称:XML Path Language是一种小型的查询语言

是一门在XML文档中查找信息的语言

XPath的优点

可在XML中查找信息

支持HTML的查找

可通过元素和属性进行导航

XPath需要依赖lxml库

安装方式:

pip install lxml

爬取起点小说网使用XPath数据

www.qidian.com/rank/yuepia…

import requests
from lxml import etree
url = 'https://www.qidian.com/rank/yuepiao'
#添加headers伪装成浏览器
headers= {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'}
#发送请求
resp = requests.get(url,headers)
#类型转换
e = etree.HTML(resp.text)
print(type(e))
names = e.xpath('//div[@class="book-mid-info"]/h2/a/text()')
print(names)
authors = e.xpath('//p[@class="author"]/a[1]/text()')
print(authors)

for name, author in zip(names, authors):
    print(name,":",author)

输入结果:

<class 'lxml.etree._Element'>
['夜的命名术', '明克街13号', '不科学御兽', '视死如归魏君子', '我只想安静的做个苟道中人', '公子别秀', '星门', '灵境行者', '洪主', '家父汉高祖', '赤心巡天', '这个明星很想退休', '镜面管理局', '这游戏也太真实了', '轮回乐园', '我已不做大佬好多年', '择日飞升', '长夜余火', '终宋', '深空彼岸']
['会说话的肘子', '纯洁滴小龙', '轻泉流响', '平层', '爆炸小拿铁', '荣小荣', '老鹰吃小鸡', '卖报小郎君', '烽仙', '历史系之狼', '情何以甚', '幼儿园一把手', '横扫天涯', '晨星LL', '那一只蚊子', '萌俊', '宅猪', '爱潜水的乌贼', '怪诞的表哥', '辰东']
夜的命名术 : 会说话的肘子
明克街13号 : 纯洁滴小龙
不科学御兽 : 轻泉流响
视死如归魏君子 : 平层
我只想安静的做个苟道中人 : 爆炸小拿铁
公子别秀 : 荣小荣
星门 : 老鹰吃小鸡
灵境行者 : 卖报小郎君
洪主 : 烽仙
家父汉高祖 : 历史系之狼
赤心巡天 : 情何以甚
这个明星很想退休 : 幼儿园一把手
镜面管理局 : 横扫天涯
这游戏也太真实了 : 晨星LL
轮回乐园 : 那一只蚊子
我已不做大佬好多年 : 萌俊
择日飞升 : 宅猪
长夜余火 : 爱潜水的乌贼
终宋 : 怪诞的表哥
深空彼岸 : 辰东

BeautifulSoup的简介

BeautifulSoup(直译:美味的汤)

是一个可以从HTML或XML文件中提取数据的Python库。

其功能简单而强大,容错能力高,文档相对完善,清晰易懂。

非Python标准模块,需要安装才能使用。

安装方式

pip install bs4

测试方式

import bs4

BeautifulSoup 解析数据

解析器

BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,

如果不安装第三方解析器,则Python会使用默认解析器。

示例

from bs4 import BeautifulSoup

html =  '''
    <html>
        <head>
            <title>mila</title>
        </head>
        <body>
            <h1 class="mila-body nice-body">you make me so happy</h1>
            <a href="https://www.bilibili.com/">哔哩哔哩</a>
            <h2><!--注释--></h2>
        </body>
        
    </html>
'''
# bs = BeautifulSoup(html, 'html.parser')
bs = BeautifulSoup(html, 'lxml')
#获取标签
print(bs.title)
#获取h1标签的所有属性
print(bs.h1.attrs)
#获取单个属性
print(bs.h1.get('class'))
print(bs.h1['class'])
print(bs.a['href'])
#获取文本内容
print(bs.title.text)
print(bs.title.string)
#获取内容
print('------------',bs.h2.string)#获取到h2标签中的注释的文本内容
print(bs.h2.text)#因为h2标签中没有正儿八经的文本内容

BeautifulSoup的使用

BeautifulSoup提取数据的常用方法

find() 提取满足要求的首个数据

find_all() 提取满足要求的所有数据

CSS选择器

通过ID查找 bs.select(‘#abc’)

通过class查找 bs.select(‘.abc’)

通过属性查找 bs.select(a[‘class=“abc”’])

Tag对象

获取标签 bs.title

获取所有属性 bs.title.attrs

获取单个属性的值

bs.div.get(‘class’)

bs.div[‘class’]

bs.a[‘href’]

from bs4 import BeautifulSoup
html = '''
    <title>malena</title>
    <div class="info" float="left">good girl gone bad</div>
    <div class="info" float="right" id="p">
        <span>come on baby</span>
        <span>you are so goo to me</span>
        <a href="https://www.bilibili.com/"></a>
    </div>
'''
bs = BeautifulSoup(html, 'lxml');
print((bs.title, type(bs.title)))
print(bs.find('div', class_='info'))
print('-------------')
print(bs.find_all('div', class_='info'))
for item in bs.find_all('div', class_='info'):
    print('*****************')
    print(item, type(item))
print('-------------')
print(bs.find_all('div',attrs={'float': 'right'}))

print('============CSS选择器==========')
print(bs.select('#p'))
print('-------------')
print(bs.select('.info'))
print('-------------')
print(bs.select('div>span'))
print('-------------')
print(bs.select('div.info>span'))
print('-------------')
for item in bs.select('div.info>span'):
    print(item.text)

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

Python兼职渠道推荐

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值