接着上面的。

使用xpath提取信息,虽然python很多库,比如beautifulsoup,也有很多功能,比如查找节点,添加删除节点。但是个人感觉对爬虫来说,最重要的还是提取信息,当然,顺利的提取信息的前提是你得掌握好这些库的用法,不过有些功能确实一辈子也不会用到。对爬虫来说,就是提取文本,获取属性,这两个。

还是打开页面,这里我直接读入本地的文件,知识为了简单起见。不在requests了。

我们自己做网页爬虫的时候,还是需要借助一些工具的。比如xpath。我经常用的就是 浏览器的xpath helper插件。可以很方便的看到xpath的路径是否匹配到文本。

from lxml import etreee = etree.HTML(html)
e.xpath("//title//text()")

具体到提取信息,还是需要借助浏览器插件。

这样,就可以看到是不是能提取到信息,如果不能,那就就是xpath有问题了。可以再改,

当然也可以在element,元素上直接点击右键,copy xpath,但是这只是有助于我们分析,往往只能提取个别的,不能用到一个网页里面所有的电影。

拷贝出来的xpath是这样的。

结果它只能匹配《我不是药神》这一个电影名字。往往自己写,加上拷贝,一起分析。简单的xpath,直接就可以写出来,比如这个例子。复杂的可以借助拷贝,再分析。

演员的信息可以这样。

e = etree.HTML(html)
dd = e.xpath('//div[@class="main"]//dd')
print(len(dd))
for d in dd:index = d.xpath('.//i/text()')[0]img = d.xpath('.//a/img[2]/@data-src')[0]title = d.xpath('.//p[contains(@class,"name")]//text()')[0]actor = d.xpath('.//p[contains(@class,"star")]//text()')[0].strip()releasetime = d.xpath('.//p[contains(@class,"releasetime")]//text()')[0]score = d.xpath('.//p[contains(@class,"score")]//text()')score = "".join(score)print(index, img, title, actor, releasetime, score)

这里我还是先把dd元素抓出来,然后再遍历。

dd元素里面的每一个元素也是xpath对象,还是继续用xpath提取信息。

为了省事,直接用的 contains方法, 其实也可以直接写 成

//dd//p[@class="star"]//text()

这样的形式,但是我怕有的class里面的内容不止是一个单词,为了省事,还是用了contains安全一些。

得到结果。

接下来用bs4

首先还是把html转成bs4对象。

from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')
# print(soup)
items = soup.find_all('dd')
# print(len(dd))
for item in items:index = item.i.stringtitle = item.find(class_='name').string,img  = item.find(class_='board-img')['data-src'],star =  item.find(class_='star').string.strip()[3:],time = item.find(class_='releasetime').string.strip()[5:],score =  item.find(class_='integer').string.strip() + item.find(class_='fraction').string.strip()print(index, img, title, actor, releasetime, score)

然后是css

同样,还是读入为css对象,只不过bs4里面就可以直接用css。

比如:

soup.select('dd:nth-child(1) .star')
soup.select('dd i.board-index')[0]dd = soup.select('dd')
ddfor d in dd:print(d.select('.star'))soup.select("dd p.star")[0].get_text()
soup.select("dd i.board-index")[0].get_text()soup.select("dd .score i")[0].string
soup.select("dd:nth-child(1) .integer")[0].string

先把dd解析为soup对象,然后,用select方法,就可以了。

bs4提取信息的函数是get_text(),

或者string,两者结果是一样的。

css选择器,需要借助浏览器的chropath插件,

比如

我平时喜欢用scrapy的selector方法,里面支持xpath 和css,所以还是挺方便的,反正都要装scrapy。所以一个解决所有问题。

python爬虫,爬取猫眼电影2(xpath和bs4)相关推荐

  1. Python爬虫爬取猫眼电影风语咒影评评论信息

    风语咒作为扛起国漫崛起的又一国漫之作,爬取风语咒猫眼的电影评论数据,以便对其评论做之后的数据分析. 此次demo的流程图如下: 一.找到猫眼电影中风语咒影评得json数据: l 找出url后,往下滚动 ...

  2. python爬虫 爬取猫眼电影数据

    # 定义一个函数获取猫眼电影的数据​ import requestsdef main():url = url = 'http://maoyan.com/board/4?offset=0'html = ...

  3. python爬虫--爬取-猫眼电影-代码

    import re import requests class Mao():def __call__(self, *args, **kwargs):"""当前类的对象当做 ...

  4. python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中

    我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...

  5. Python爬虫 爬取豆瓣电影TOP250

    Python爬虫 爬取豆瓣电影TOP250 最近在b站上学习了一下python的爬虫,实践爬取豆瓣的电影top250,现在对这两天的学习进行一下总结 主要分为三步: 爬取豆瓣top250的网页,并通过 ...

  6. Python爬虫爬取豆瓣电影评论内容,评论时间和评论人

    Python爬虫爬取豆瓣电影评论内容,评论时间和评论人 我们可以看到影评比较长,需要展开才能完整显示.但是在网页源码中是没有显示完整影评的.所以我们考虑到这部分应该是异步加载的方式显示.所以打开网页的 ...

  7. 【python教程入门学习】Python爬虫抓取猫眼电影排行榜

    本节使用 Python 爬虫抓取猫眼电影网 TOP100 排行榜(https://maoyan.com/board/4)影片信息,包括电影名称.上映时间.主演信息. 在开始编写程序之前,首先要确定页面 ...

  8. python爬虫下载电影百度文档_写一个python 爬虫爬取百度电影并存入mysql中

    目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...

  9. 记第一天使用node做爬虫——爬取猫眼电影票房总榜以及指定电影的豆瓣评论前200条

    首先,我是一个做前端的应届生,今天朋友想让我帮忙爬取猫眼电影票房总榜的数据,但是我之前一点都没接触过爬虫,但我还是说:okk,我试试: 然后试试就逝世,各种坑接踵而来: 提前声明:这篇文章暂时只是获取 ...

  10. Python3爬虫——爬取猫眼电影排行

    一.爬取猫眼电影排行 目标:提取猫眼电影TOP100的电影排名.名称.主演.上映时间.评分.海报链接. URL:https://maoyan.com/board/4 保存:JSON # 版本:Pyth ...

最新文章

  1. shell学习之路:流程控制(if)
  2. 计算机编程导论python程序设计答案-学堂在线_计算机科学与Python编程导论_作业课后答案...
  3. WiFi漫游了解一下?大户型wifi组网方案
  4. 【Python】学习笔记总结3(Python文件操作)
  5. 简述tcp协议三报文握手过程_TCP协议中的三次握手和四次挥手(图解)
  6. 【渝粤题库】广东开放大学 C语言程序设计 形成性考核
  7. java基础面试题之:String 类的常用方法都有那些?
  8. javaweb入门笔记(5)-cookie和session
  9. W-3 用grub4dos安装Windows7、Ubuntu 12.10双系统(图解)
  10. 全新在线制图网站源码在线制作横幅广告
  11. [C语言] [游戏] 扫雷
  12. 阿里云跨云迁移工具案例实践:腾讯云迁移到阿里云
  13. Win10+Android+夜神安卓模拟器 搭建ReactNative开发环境
  14. 10个有趣且易上手的AI项目(附Python源代码)
  15. 全国电信/联通DNS服务器地址列表
  16. 这40款优质APP大合集,总有一个适合你!
  17. 人手一份!八大危险作业操作规程、作业票证(模板)、安全培训齐了~
  18. Fisher Vector费舍尔向量and FIsher Kernel费舍尔核
  19. 自动挂载和手动挂载的区别·
  20. Qt学习 第22节:Qcolor 中的Alpha不透明度

热门文章

  1. 【STM32】OLED 显示实验代码详解
  2. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第1章-绪论
  3. 【控制】根轨迹分析及绘制
  4. 3.5 集束搜索的误差分析-深度学习第五课《序列模型》-Stanford吴恩达教授
  5. 3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授
  6. 科普 | USB 协议与接口
  7. AI真的会杀人?DeepMind开发了二维网格游戏来做测试
  8. 原创 深度 技术:WatchStor焦点周刊创刊号
  9. 奥迪坚呼叫中心在电话营销领域必须要了解的几大优势
  10. SpringQuartz定时任务调度器