胶水PythonPython数据采集与爬虫Python 爬虫专栏

爬取猫眼视频Top100

2017-03-16  本文已影响126人  小白猿

这是我关于爬虫得第二篇文字,其实应该放在第一篇,我看的三套视频顺序有点问题,本篇应该是算是最基础最简单的。

前言

本篇博客主要记录猫眼视频Too100的榜单的数据,每条榜单的数据由以下6部分组成,这五部分主要是集中一个<dd></dd>标签中,故通过正则匹配可以获取其中的数据

分析页面

单条榜单页面结构图

具体爬取

这次爬取的代码大致分为4部分,页面获取,单条榜单的获取,页面所有榜单,最后保存到文件

页面获取

有了前面的爬取的基础,这里就很简单, 主要就是通过一个url下载页面,本次依旧采用requests框架进行数据的下载

import requests
from requests.exceptions import RequestException
'''
1.获取单页的数据
'''
def get_one_page(url):
    try:
        response = requests.get(url)
        if response.status_code == 200:
            return response.text
        print("errorcode:%d" % response.status_code)
        return None
    except RequestException:
        print ("单页面获取失败")
        return None

单条榜单的获取

这一节是重头戏,通过正则匹配,将页面中6类有用的信息逐条拆解出来

索引
图片

标题

主演

上映时间

评分

将数据转换为字典

将字典存储到本地文件

属于Python基础知识,不过多赘述,请看代码

'''
3,将获取到的数据转换为json格式存储到本地文件
'''
def write_to_file(content):
    with open("result.txt","a") as f:
        # 字典转换为json字符串存储到文件
        f.write(json.dumps(content) + "\n")
        f.close()

'''
4.项目总调度
'''
def main():
    # 主页面url
    url = "http://maoyan.com/board/4"
    # 获取页面
    html = get_one_page(url)
    # 遍历页面进行正则匹配
    for item in  parse_one_page(html):
        # 写入文件
        write_to_file(item)

if __name__ == "__main__":
    main()

数据转码

参看本地的txt文件,发现数据为Unicode编码,不易读取,根据视频中修改方式,报错,有可能是Python版本问题,我使用的是2.7的版本,但是视频中是3.x的版本

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

总结

像前言中写道的,本文应该放在第一篇,算是爬虫里比较初级的,网页结构也较为简单,考查的知识点也主要是正则的匹配,除去这几点,还有几点自己感觉重要的罗列一下:

源码地址

上一篇 下一篇

猜你喜欢

热点阅读