我们本次的项目主要是爬取豆瓣top250的电影详情链接,图片链接,影片中外文名,评分,评价数等数据,并作数据的持久化处理(即存放到excel中)。在本次项目中,我主要负责页面数据的获取以及数据的存储,利用urllib库获取页面,再利用python库xlwt将爬取的数据datalist写入Excel表格中。
本项目需要实现的模块:
爬虫调度器:爬虫调度器只要负责统筹其他四个模块的协调工作;
URL 管理器:负责管理 URL 链接,维护已经爬取的 URL 集合和未爬取的 URL 集合,提供获取新 URL 链接接口;
HTML 下载器:用于从 URL 管理器中获取未爬取的 URL 链接并下载 HTML 网页;
HTML 解析器:用于从 HTML 下载器中获取已经下载的 HTML 网页,并从中解析出新的 URL 交给 URL 管理器,解析出有效数据交给数据存储器;
数据存储器:用于将 HTML 解析器解析出来的数据通过文件或者数据库形式存储起来。
爬虫思路如下:
1.首先通过浏览器查看目标网页并借助Chrome开发者工具(F12)来分析网页,在Elements下找到需要的数据位置,然后通过HTTP库向目标站点发起请求,请求包含了额外的header等信息,如果服务器能正常响应,就会得到一个Response,这便是所要获取的页面内容。
2.获取页面数据:
先定义一个获取页面的函数askURL,再传入一个url参数表示网址,如豆瓣电影 Top 2500;
然后urllib.Request生成请求;
urllib.urlopen发送请求获取响应;
read获取页面内容;
由于在访问页面时经常会出现错误,为了程序正常运行,加入异常捕获try...except...语句。
3.对爬取的html文件进行解析:
使用BeautifulSoup定位特定的标签位置:创建BeautifulSoup对象,通过页面解析器找到能够完整提取出一部影片的内容的项;
使用正则表达式找到具体的内容:创建需要提取的项的模式对象,根据对象的正则表达式抽取,通过data存储每一部电影抽取的结果,datalist存储所有电影解析的结果。
4.数据可视化:
获取数据;
解析数据;
保存数据;
通过词云输出想要的结果,将评分排名关系可视化。
5.数据存储:利用python库xlwt将抽取的数据datalist写入Excel表格,先以utf-8编码创建一个Excel对象,然后创建一个sheet表,再往单元格内写入内容,最后保存表格。
6.Excel结果
电影详情链接、图片链接、影片中文名、影片外国名、评分、评价数等。