python爬虫学习34

目录

  • python爬虫学习34
    • 九、parsel 库的使用其一
      • 9-1、parsel 库的下载
      • 9-2、初始化
      • 9-3 提取文本

今天呢就进入到爬虫网页数据解析提取的最后一个小节,与大家一同学习parsel库的使用,由于博主本身对Web编程不甚了解,所以CSS选择就浅显的了解了一下,pyquery库大家感兴趣就自己学习吧。

九、parsel 库的使用其一

前几节我们共同学习了Xpath语言,一同了解了lxml与beautiful soup库的基本用法。现在不管是使用Xpath还是CSS选择器,我们都已经能够处理绝大多数的内容提取工作了。

在使用方法时,有时使用Xpath会更简单,有时使用CSS会更加方便,那么这个时候我们希望将两者结合起来,parsel库就是一个不错的选择。

9-1、parsel 库的下载

parsel这个库可以解析HTML与XML,并支持Xpath与CSS选择器对内容的提取和修改,同时也支持正则表达式的提取功能。parsel是Python最流行的爬虫框架scrapy的底层支持。

下载安装库

pip install parsel

9-2、初始化

通常我们需要使用selector类声明一个selector对象,对一段待处理的html文本进行初始化:

from parsel import selectorhtml = """
<div class="nav"><div class="nav-head"><h4>hello<h4></div><ul><li><a href="https://www.qbiqu.com/">首页</a></li><li><a href="/modules/article/bookcase.php">我的书架</a></li><li><a href="/xuanhuanxiaoshuo/">玄幻小说</a></li><li><a href="/xiuzhenxiaoshuo/">修真小说</a></li><li><a href="/dushixiaoshuo/">都市小说</a></li><li><a href="/chuanyuexiaoshuo/">穿越小说</a></li><li><a href="/wangyouxiaoshuo/">网游小说</a></li><li><a href="/kehuanxiaoshuo/">科幻小说</a></li><li><a href="/paihangbang/">排行榜单</a></li><li><a href="/wanben/1_1">完本小说</a></li><li><a href="/xiaoshuodaquan/">全部小说</a></li><li><script type="text/javascript">yuedu();</script></li></ul></div><div id="banner" style="display:none"></div><div class="dahengfu"><script type="text/javascript">list1();</script></div>
"""selector = selector.Selector(text=html)

在初始化之后我们就可以使用之前学会的Xpath或caa方法进行选择了:

from parsel import selectorhtml = """
<div class="nav"><div class="nav-head"><h4>hello<h4></div><ul><li><a href="https://www.qbiqu.com/">首页</a></li><li><a href="/modules/article/bookcase.php">我的书架</a></li><li><a href="/xuanhuanxiaoshuo/">玄幻小说</a></li><li><a href="/xiuzhenxiaoshuo/">修真小说</a></li><li><a href="/dushixiaoshuo/">都市小说</a></li><li><a href="/chuanyuexiaoshuo/">穿越小说</a></li><li><a href="/wangyouxiaoshuo/">网游小说</a></li><li><a href="/kehuanxiaoshuo/">科幻小说</a></li><li><a href="/paihangbang/">排行榜单</a></li><li><a href="/wanben/1_1">完本小说</a></li><li><a href="/xiaoshuodaquan/">全部小说</a></li><li><script type="text/javascript">yuedu();</script></li></ul></div><div id="banner" style="display:none"></div><div class="dahengfu"><script type="text/javascript">list1();</script></div>
"""ini_sel = selector.Selector(text=html)
item1 = ini_sel.xpath('//li/a[@href = "/xuanhuanxiaoshuo/"]')
print(item1)
print(type(item1))      # 类型为 <class 'parsel.selector.SelectorList'>
print(len(item1))       # 长度为一
item2 = ini_sel.css('.nav-head')
print(item2)

运行结果:

对于Selector对象,这是一个可以迭代的对象,所有节点的代码被存储在该对象的data属性里。

9-3 提取文本

既然Selector对象是一个可迭代的对象,我们就可以使用循环对结果进行遍历:

from parsel import Selector
html = """
<div class="nav"><div class="nav-head"><h4>hello<h4></div><ul><li><a href="https://www.qbiqu.com/">首页</a></li><li><a href="/modules/article/bookcase.php">我的书架</a></li><li><a href="/xuanhuanxiaoshuo/">玄幻小说</a></li><li><a href="/xiuzhenxiaoshuo/">修真小说</a></li><li><a href="/dushixiaoshuo/">都市小说</a></li><li><a href="/chuanyuexiaoshuo/">穿越小说</a></li><li><a href="/wangyouxiaoshuo/">网游小说</a></li><li><a href="/kehuanxiaoshuo/">科幻小说</a></li><li><a href="/paihangbang/">排行榜单</a></li><li><a href="/wanben/1_1">完本小说</a></li><li><a href="/xiaoshuodaquan/">全部小说</a></li><li><script type="text/javascript">yuedu();</script></li></ul></div><div id="banner" style="display:none"></div><div class="dahengfu"><script type="text/javascript">list1();</script></div>
"""ini_sel = Selector(text=html)
items = ini_sel.xpath('//li')
for i in items:print(i.get())

运行结果:

遍历时的每一个 i变量的值又是一个selector对象,对于每一个i我们又可以使用css或者Xpath方法进行内容提取。若我们想要获取Selector对象的内容,则要使用该对象提供的get()方法,获取包含在该对象中的内容。

但是对于get方法,它仅能够返回第一个符合条件的结果

from parsel import Selector
html = """
<div class="nav"><div class="nav-head"><h4>hello<h4></div><ul><li><a href="https://www.qbiqu.com/">首页</a></li><li><a href="/modules/article/bookcase.php">我的书架</a></li><li><a href="/xuanhuanxiaoshuo/">玄幻小说</a></li><li><a href="/xiuzhenxiaoshuo/">修真小说</a></li><li><a href="/dushixiaoshuo/">都市小说</a></li><li><a href="/chuanyuexiaoshuo/">穿越小说</a></li><li><a href="/wangyouxiaoshuo/">网游小说</a></li><li><a href="/kehuanxiaoshuo/">科幻小说</a></li><li><a href="/paihangbang/">排行榜单</a></li><li><a href="/wanben/1_1">完本小说</a></li><li><a href="/xiaoshuodaquan/">全部小说</a></li><li><script type="text/javascript">yuedu();</script></li></ul></div><div id="banner" style="display:none"></div><div class="dahengfu"><script type="text/javascript">list1();</script></div>
"""ini_sel = Selector(text=html)item0 = ini_sel.xpath('//a')
print(item0.get())

运行结果:凭借之前的知识我们很容易知道item0中的内容不止一项,但是get方法只返回了一项:

若要返回所有结果:使用getall()方法

from parsel import Selector
html = """
<div class="nav"><div class="nav-head"><h4>hello<h4></div><ul><li><a href="https://www.qbiqu.com/">首页</a></li><li><a href="/modules/article/bookcase.php">我的书架</a></li><li><a href="/xuanhuanxiaoshuo/">玄幻小说</a></li><li><a href="/xiuzhenxiaoshuo/">修真小说</a></li><li><a href="/dushixiaoshuo/">都市小说</a></li><li><a href="/chuanyuexiaoshuo/">穿越小说</a></li><li><a href="/wangyouxiaoshuo/">网游小说</a></li><li><a href="/kehuanxiaoshuo/">科幻小说</a></li><li><a href="/paihangbang/">排行榜单</a></li><li><a href="/wanben/1_1">完本小说</a></li><li><a href="/xiaoshuodaquan/">全部小说</a></li><li><script type="text/javascript">yuedu();</script></li></ul></div><div id="banner" style="display:none"></div><div class="dahengfu"><script type="text/javascript">list1();</script></div>
"""ini_sel = Selector(text=html)item0 = ini_sel.xpath('//a')
print(item0.getall())

运行结果:所有结果放到了到一个列表中

今日结束,明日继续!

python爬虫学习34相关推荐

  1. Python爬虫学习笔记 -- 爬取糗事百科

    Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...

  2. python爬虫正则表达式实例-python爬虫学习三:python正则表达式

    python爬虫学习三:python正则表达式 1.正则表达式基础 a.正则表达式的大致匹配过程: 1.依次拿出表达式和文本中的字符比较 2.如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符 ...

  3. Python爬虫学习系列教程

    大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫 ...

  4. 新手python爬虫代码_新手小白必看 Python爬虫学习路线全面指导

    爬虫是大家公认的入门Python最好方式,没有之一.虽然Python有很多应用的方向,但爬虫对于新手小白而言更友好,原理也更简单,几行代码就能实现基本的爬虫,零基础也能快速入门,让新手小白体会更大的成 ...

  5. Python爬虫学习系列教程-----------爬虫系列 你值的收藏

    静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...

  6. Python 爬虫学习 系列教程

    Python爬虫 --- 中高级爬虫学习路线 :https://www.cnblogs.com/Eeyhan/p/14148832.html 看不清图时,可以把图片保存到本地在打开查看... Pyth ...

  7. 从入门到入土:Python爬虫学习|实例练手|爬取LOL全英雄信息及技能||异步加载|初级难度反扒处理|寻找消失的API

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. 从入门到入土:Python爬虫学习|实例练手|详细讲解|爬取腾讯招聘网|一步一步分析|异步加载|初级难度反扒处理|寻找消失的API来找工作吧

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  9. 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

最新文章

  1. 利用OpenCV建立视差图像
  2. Apollo后台配置:添加用户
  3. 女生的拳头有多厉害?
  4. IT基础架构规划方案二(计算机系统与机房规划规划)
  5. 热传导/物质扩散算法应用于推荐
  6. 判断字符串是只是数字
  7. Java高级工程师必备技术栈
  8. SWAT模型在水文水资源、面源污染模拟中的实践技术应用
  9. 关于奈奎斯特图的一些解读
  10. 文献解读-Physics Informed Deep Learning(PINN)
  11. 7-1 六度空间(30 分)
  12. 中外合作办学硕士—社科院杜兰金融管理硕士,给23考研加一重保险
  13. win 2008R2启用TLS 1.2 Windows 2008/2008R2手动启用TLS1_2协议教程
  14. “应用程序无响应”原因汇总
  15. 算法转 Java 后端,2021秋招斩获腾讯、京东、百度等大厂 offer 面经分享!
  16. np.loadtxt加载数据集遇到ValueError: invalid literal for float(): 3.7194476e+06 -1.2636059e+05错误
  17. 让我摘下星星送给你_摘下星星送给你摘下月亮送给你是哪首歌的歌词
  18. matlab 符号值转为实数,Matlab:在实现二进制到实数转换的公式时,无法获得唯一的有理数Part1...
  19. 一生只为寻找欢笑——读Linux之父林纳斯自传
  20. html学生设计作品,7个最佳学生作品集网站,作品、排版布局、配色总有一点惊艳你...

热门文章

  1. Python机器学习 — 线性回归(Linear Regression)
  2. Win10服务器离线安装NET3.5组件,保姆级教程
  3. [codevs 1391] 伊吹萃香
  4. 10-203 查询员工表全部信息
  5. 全阶滑模观测器程序_基于扩张状态观测器的永磁同步电机全阶滑模变结构位置伺服控制方法...
  6. 【算法设计与分析】经典代码赏析【1】
  7. HDU AWR电磁场与微波实验 操作记录
  8. windows——批处理文件(.bat)详解
  9. T5模型及其后续优化
  10. CSS的四种基本选择器和四种高级选择器