前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入


爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与BeautifulSoup,我在网上查了一下资料,了解到三者之间的使用难度与性能。

三种爬虫方式的对比

今天咱们主要是讲的xpath爬取数据

xpath简单用法

from lxml import etrees=etree.HTML(源码) #将源码转化为能被XPath匹配的格式s.xpath(xpath表达式) #返回为一列表,

基础语法:

// 双斜杠 定位根节点,会对全文进行扫描,在文档中选取所有符合条件的内容,以列表的形式返回。

/ 单斜杠 寻找当前标签路径的下一层路径标签或者对当前路标签内容进行操作

/text() 获取当前路径下的文本内容

/@xxxx 提取当前路径下标签的属性值

| 可选符 使用|可选取若干个路径 如//p | //div 即在当前路径下选取所有符合条件的p标签和div标签。

. 点 用来选取当前节点

… 双点 选取当前节点的父节点

学以致用,方能让我们能快速掌握xpath语法功能。

我们这次需要爬取豆瓣音乐前250条

打开豆瓣音乐:https://music.douban.com/top250

获取单条数据

1.获取音乐标题

打开网址,按下F12,然后查找标题,右键弹出菜单栏 Copy==> Copy Xpath

这里我们想获取音乐标题,音乐标题的xpath是:xpath://[@id="content"]/div/div[1]/div/table[1]/tbody/tr/td[2]/div/a

# coding:utf-8
from lxml import etree
import requestsurl = 'https://music.douban.com/top250'html = requests.get(url).text    #这里一般先打印一下html内容,看看是否有内容再继续。
s = etree.HTML(html)
title = s.xpath('//*[@id="content"]/div/div[1]/div/table[1]/tbody/tr/td[2]/div/a')
print (title)

运行代码:
居然是空的。!!!
这里需要注意一下,浏览器复制的xpath只能作参考,因为浏览器经常会在自己里面增加多余的tbody标签,我们需要手动把这个标签删除
删除中间的/tbody后,是这样的,

title = s.xpath('//*[@id="content"]/div/div[1]/div/table[1]/tr/td[2]/div/a')

然后我们再运行代码。

<Element a at 0x53d26c8>

说明标题被获取到了。

获取标题文本

#xpath表达式要追加/text()
title = s.xpath('//*[@id="content"]/div/div[1]/div/table[1]/tr/td[2]/div/a/text()')
#因为要获取标题,所以我需要这个当前路径下的文本,所以使用/text()

又因为这个s.xpath返回的是一个集合,且集合中只有一个元素所以我再追加一个[0]

新的表达式:

title = s.xpath('//*[@id="content"]/div/div[1]/div/table[1]/tr/td[2]/div/a/text()')[0]
#因为要获取标题,所以我需要这个当前路径下的文本,所以使用/text(),再追加[0]

重新运行得到结果:

We Sing. We Dance. We Steal Things.

正是我们想要的标题。

完整代码

# coding:utf-8
from lxml import etree
import requests#获取页面地址
def getUrl():for i in range(10):url = 'https://music.douban.com/top250?start={}'.format(i*25)scrapyPage(url)#爬取每页数据
def scrapyPage(url):html = requests.get(url).texts = etree.HTML(html)trs = s.xpath('//*[@id="content"]/div/div[1]/div/table/tr')for tr in trs:href = tr.xpath('./td[2]/div/a/@href')[0]title = tr.xpath('./td[2]/div/a/text()')[0]score = tr.xpath('./td[2]/div/div/span[2]/text()')[0]number = tr.xpath('./td[2]/div/div/span[3]/text()')[0]img = tr.xpath('./td[1]/a/img/@src')[0]print href, title, score, number, imgif  '__main__':getUrl()

Python爬虫如何实用xpath爬取豆瓣音乐相关推荐

  1. Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题

      比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒--   又比如知乎关注的人列表页面:   我复制了其中两个人昵称 ...

  2. python爬虫(一)爬取豆瓣电影排名前50名电影的信息

    python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...

  3. Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除)

    Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除) import requests from bs4 import BeautifulSoup import ti ...

  4. Python爬虫:现学现用xpath爬取豆瓣音乐

    爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与BeautifulSoup,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方式的对比. 这样一比较我我选择了Lxml(xpa ...

  5. python爬取音乐_Python现学现用xpath爬取豆瓣音乐

    昨天说了Requests库,今天来上手爬虫了. 爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与BeautifulSoup,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方 ...

  6. Python爬虫之利用xpath爬取ip代理网站的代理ip

    爬虫工具 python3 pycharm edge/chrome requests库的用法 requests库是python中简单易用的HTTP库 用命令行安装第三方库 pip install req ...

  7. python爬虫笔记一:爬取豆瓣中指定的明星所有图片

    从这个网址学习的:https://www.bilibili.com/read/cv10367703/ ------------------------------------------------- ...

  8. Python爬虫教程003:爬取豆瓣电影信息(更加丰富的信息)

    # -*- coding: utf-8 -*- """ @ModuleName:demo3 @Function: @Author: H2017824 @Time: 202 ...

  9. python爬虫练习(xpath爬取站长素材中的免费简历模板)

    思路分析 首先,对站长素材网站中的免费网站页面发起get请求,以防万一,可将响应数据编码格式手动设置为utf-8.然后,实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中.再使用x ...

最新文章

  1. 图像标记工具Labelme和LabelImg
  2. Excel 自动根据Sheet名生成目录
  3. idea2021部署maven+javaweb项目到jboss(diy)
  4. 快速向表中插入大量数据Oracle中append与Nologgin的作用
  5. 《深入理解计算机系统》读书笔记(ch1)
  6. poj1716 Integer Intervals(差分约束)
  7. unity如何实现图片透视_如何用java实现图片与base64转换
  8. 如何分辨usb压枪芯片是无后座压枪还是键鼠模拟压枪
  9. 浅析局域网聊天软件的能力
  10. 服务器开机日志文件,大芒果启动WOW服务器 提示日志文件找不到怎么办
  11. define is not defined解决办法
  12. ThinkPad笔记本电脑网络重置之后wifi没有了
  13. HTML背景带视频的个人炫酷引导页源码
  14. Matlab--函数与子函数
  15. 中南计算机绘图试题,中南大学计算机绘图试题b答案
  16. Uniapp|image无法显示图片
  17. 给uGUI添加自定义中文字库
  18. vim tutorial 101 hacks(三)
  19. 2021年南京大学842考研-软件工程部分代码设计题
  20. 中国电子学会和nct哪个证书好,适合报名哪一个呢?

热门文章

  1. HP惠普暗影精灵3_OMEN by HP 17-an013tx,17-an014tx原厂Win10系统原装出厂OEM专用系统
  2. ssm+JSP计算机毕业设计演唱会售票系统eq1z0【源码、程序、数据库、部署】
  3. 微信视频号(短内容)上线内测2020年1月21日晚上线开放入口在哪里?
  4. 【目标检测】研究生第一次组会汇报PPT(初稿)(专业术语讲解+论文分析)(100页)(下篇)
  5. 马老师的闪电五连鞭动态词云图会是怎么样的呢?丝毫不比街舞差
  6. OpenDDS踩坑(2)-DCPSInfoRepo ERROR add_domain_participant returned invalid id
  7. Web Server 配置安全
  8. 使用U盘安装Ubuntu 16.04 系统
  9. 解决PIL没有ImageOps模块问题,以及Windows成功安装torchvision
  10. 服务器分布式部署和集群部署的区别