在上一个文章中详细的介绍了CSV文件内容的读取和写入,那么在本次文章中结合网络爬虫的技术,把数据获取到写入到CSV的文件中,其实利用爬虫的技术可以获取到很多的数据,某些时候仅仅是好玩,真正进行数据分析并且让数据可以商业化产生价值体系,是一个很高的境界。

这里以豆瓣电影为案例,获取豆瓣电影中正在上映的电影,并且把这些数据写入到CSV的文件中,主要是电影名称, 电影海报的链接地址和电影评分。这里使用到的库是lxml,lxml是一款高性能的Python HTML/XML解析器,安装命令为:

pip3  install lxml

使用它的时候主要会使用到xpath的语法(当然这里不会详细的介绍xpath)。首先见要获取的数据,如下图所示:

链接地址是:https://movie.douban.com/cinema/nowplaying/xian/,那么首先我们利用requests的库来对它获取请求,然后获取到文件的内容,实现的代码为:

下来我们使用lxml对text进行解析,解析如果对lxml熟悉相对来说是比较简单的,实现的代码是:

打开浏览器的调试模式,鼠标具体定位要获取的数据,这里是获取所有的数据,依据源码可以看到它是在div下面,同时这个div的class是lists,见下图所示:

那么就先获取到所有的uls,实现的代码为:

然后我们对uls进行循环,输出的对象都是Element,那么我们就需要在这些Element对象中获取电影名称,海报链接地址,和评分,见循环输出的内容:

首先来获取电影海报的链接地址,见海报链接地址在源码中的位置截图:

依据上图中可以看到,海报的链接地址和电影名称实在a标签下的img标签中,先来获取海报链接地址,它的xpath是.//a/@href,具体见实现的代码和输出:

下来来获取电影的名称,它也是在img标签中的alt属性中,它的xpath是.//a/img/@alt,见获取的源码:

最后获取平评分,来看评分在源码中的位置,见下图所示:

依据上图可以看到评分是在li标签下的span标签中并且span标签的class属性是subject-rate,那么它的xpath是.//span[@class="subject-rate"]/text(),见获取评分的数据代码:

可以看到某些电影的评分是空,同时评分应该是整型,那么就需要做处理和判断,首先判断,如果是[],替换成0,如果是['8.3']这样的,把它转成整型,但是它是列表类型,那么就是列表转为字符串再转为整型,见实现的源码和输出的评分结果:

通过如上得到了电影的名称,电影的海报地址,和电影的评分,那么它这些数据放在movie的字典中,同时在函数的循环外面定义一个列表movies[],把movie添加到列表movies中,见实现的源码:

我们循环输出列表movies看内容具体是,见执行输出的结果:

下来就是把电影名称,电影海报链接地址和电影评分写入到CSV的文件中,见完整实现的源码:

from lxml import etree
import requests
import csv'''获取豆瓣全国正在热映的电影:西安地区'''def getHeader():header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'}return headerdef parse_page(url='https://movie.douban.com/cinema/nowplaying/xian/'):movies=[]r=requests.get(url=url,headers=getHeader())text=r.texthtml=etree.HTML(text)uls=html.xpath('//ul[@class="lists"]')[0]for ul in uls:#获取电影的所有海报imgLinks=ul.xpath('.//img/@src')[0]titles=ul.xpath('.//img/@alt')[0]if len(ul.xpath('.//span[@class="subject-rate"]/text()'))==0:score=ul.xpath('.//span[@class="subject-rate"]/text()')score=''.join(score)score=int(score.replace('','0'))elif len(ul.xpath('.//span[@class="subject-rate"]/text()'))==1:score=(ul.xpath('.//span[@class="subject-rate"]/text()')[0])movie={'电影名称':titles,'电影海报':imgLinks,'电影评分':score}movies.append(movie)#实现把数据写入到csv的文件中headers=['电影名称','电影海报','电影评分']with open('movieCsv.csv','w',encoding='gbk',newline='') as f:writer=csv.DictWriter(f,headers)writer.writeheader()writer.writerows(movies)if __name__ == '__main__':parse_page()

打开movieCsv.csv文件,见写进去的数据截图:

OK,就写到这里。如您想学习接口自动化测试,可联系或者购买原创作者:无涯WuYa的接口自动化测试实战教程视频,二维码为(绝对不是打广告,只是顺便支持一下原创!):

CSV文件在网络爬虫中的应用相关推荐

  1. 盘点一个网络爬虫中常见的一个错误

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 圣朝无阙事,自觉谏书稀. 大家好, ...

  2. 将多个csv文件导入到pandas中并串联到一个DataFrame中

    本文翻译自:Import multiple csv files into pandas and concatenate into one DataFrame I would like to read ...

  3. 浅谈网络爬虫中广度优先算法和代码实现

    前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章--浅谈网络爬虫中深度优先算法和简单代码实现.今天小编给大家分享网络爬虫中广度优先算法的介绍及其代码 ...

  4. 将csv文件导入到数据库中

    1.csv文件简介 CSV全称 Comma Separated values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件.这样你就发现了,csv其实就是纯文本文件,可以使用记事本 ...

  5. 将CSV文件写入到MySQL中(用Pandas库实现MySQL数据库的读写)

    转载自公众号:python-china 转载自公众号:python-china 本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写.首先我们需要了解点ORM方面的知识. O ...

  6. 浅谈网络爬虫中广度优先算法和深度优先算法

    前言 做爬虫的,最怕业务简单粗暴的来一句"爬一下XXXX网".比如,"爬一下央广网"(示例链接:http://www.cnr.cn),看着密密麻麻的各种子分类, ...

  7. 网络爬虫中进行数据抓取

    以下内容是<用python写网络爬虫>的读书笔记 一.安装firebug lite firebug lite是一个用于在网站中查看调试html,css和javascript的有效工具.它现 ...

  8. 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

    1 引言 在编写网络爬虫时,第一步(也是极为关键一步)就是对网络的请求(request)和回复(response)进行分析,寻找其中的规律,然后才能通过网络爬虫进行模拟.浏览器大多也自带有调试工具可以 ...

  9. 网络爬虫中的验证码识别

    网络爬虫遇到的验证码 在写网络,爬虫时,遇到很多网站存在验证码的情形,有其是比较烦的是,爬取数据的每一页都有验证码,如果只有登陆时,存在验证码,这个很好解决,只需将验证码获取后手动输入就行. 但对于每 ...

最新文章

  1. Can't pickle local object 'CDLL.__init__.locals._FuncPtr'
  2. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170407
  3. RecyclerView因版本问题无法加载
  4. Chillingo分享三款游戏图标的设计经验
  5. 多选Select排序
  6. mac下SecureCRT连接阿里云服务器最新教程
  7. Linux Shell脚本专栏_批量主机远程执行命令脚本_08
  8. 【仿真】Carla介绍与使用 [1] (附代码手把手讲解)
  9. linux 挂载裸设备,centos挂载裸设备问题
  10. QComboBox实现下拉框check勾选
  11. 服务器端返回的状态码是什么意思
  12. rm -rf 命令 与正则表达式
  13. OpenVAS下载与安装
  14. C语言程序设计 | 大小端
  15. 【网络技术题库梳理6】无线局域网设备安装与调试
  16. 以下哪些不是Linux操作系统特点,Linux系统都有哪些特点?很多人不知道!
  17. Dev-C++5.11实现愤怒的小鸟
  18. 运营商大数据怎样精准营销推广获客?
  19. Android usb学习笔记:Android AOA协议Android端 流程总结
  20. 【Unity3D】 Unity Chan项目分享

热门文章

  1. android camera(四):camera 驱动 GT2005
  2. 互联网大厂薪资最全揭秘:京东
  3. 时间管理-项目管理的核心
  4. 浙大大龄毕业生的曲折人生路
  5. (六)Linux操作系统之Linux软件包管理
  6. Python基础练习题--第二章 顺序结构
  7. mtk6580-android6.0 打开内置功放喇叭出声音
  8. Linux发邮件的正确姿势~(Linux发送邮件操作流程)
  9. JavaScript - 一维数组、二维数组基础
  10. Drupal7_12: 修改footer