爬取猫眼top100数据,并保存到excel

本文代码参考了崔庆才先生的视频教学,此篇仅作为自己的学习记录。

import requests # 爬取网站
from requests.exceptions import RequestException #报错处理
import random # header选择
import re # 清洗数据
import pandas as pd # 清洗后的数据保存到excel


def get_one_page(url, header):
    """
    获取网页信息
    :param url: 接收爬取的网址的参数
    :param header: 接收模拟头文件参数
    :return:
    """
    try:
        response = requests.get(url, headers=header)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None

def parse_one_page(html):
    """
    清洗数据
    :param html: 接收数据的参数
    :return:
    """
    # 用re模块,正则表达式清晰数据
    pattern = re.compile('
.*?board-index.*?(\d+).*?data-src="(.*?)".*?name">(.*?).*?star">(.*?)

.*?releasetime">(.*?)

' +'.*?integer">(.*?).*?fraction">(.*?).*?
', re.S) items = re.findall(pattern, html) # 将元组数据转换成字典 for item in items: yield { "index": item[0], "image": item[1], "title": item[2], "actor": item[3].strip()[3:], "time": item[4].strip()[5:], "score": item[5]+item[6] } def write_to_excel(content): """ :param content: 接收数据列表参数 :return: """ # 将数据转换成DataFrame df = pd.DataFrame(content) # 将数据保存到excel df.to_excel("maoyan_top100.xlsx", index=False) def main(): # 需要爬取的网址 url = "http://maoyan.com/board/4" # 模拟多个浏览器通过网站反爬取策略 agent_01 = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1" agent_02 = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0" # 创建列表,随机选择浏览器 agent_list = [agent_01, agent_02] agent_value = random.choice(agent_list) print(agent_value) # 创建header header = {"User-Agent": agent_value, "Accept-Language": "zh-CN,zh;q=0.9" } html = get_one_page(url, header) #创建列表用于接收清洗的数据字典 content = [] for item in parse_one_page(html): content.append(item) write_to_excel(content) if __name__ == '__main__': main()

你可能感兴趣的:(python)