python之爬取猫眼电影TOP100

本文介绍了一个使用Python进行的猫眼电影榜单爬虫项目。通过解析网页内容,该项目能够抓取包括电影排名、海报图片链接、电影名称、演员阵容、上映时间和评分等在内的详细信息,并将这些数据存储到本地文件中。文中提供了完整的代码实现,涵盖了请求发送、响应处理、数据解析及存储等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- coding:utf-8 -*-
import requests
import re
import json


def get_one_page(url):
    try:
        respone = requests.get(url)
        if respone.status_code == 200:
            return respone.text
        return None
    except Exception:
        return None

def write_to_file(conetxt):
    with open('result.txt', 'a') as f:
        f.write(json.dumps(conetxt,ensure_ascii=False) + '\n')
        f.close()




def parse_one_page(html):
    # print(html)
    pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'
                         +'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
                         +'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)
    # pattern = re.compile(".*<p>(.*?)</p>.*", re.S)
    # items = re.findall(pattern, html)
    # print type(items), len(items)
    # print(items[0])
    items = re.findall(pattern,html)
    # print(items[0])
    for item in items:
        yield {
            "index":item[0].encode("utf-8"),
            "image":item[1].encode("utf-8"),
            "title":item[2].encode("utf-8"),
            "actor":item[3].strip()[3:].encode("utf-8"),
            "time":item[4].strip()[5:].encode("utf-8"),
            "socre":item[5].encode("utf-8")+item[6].encode("utf-8")

        }
    # for i in items:
    #     for j in i:
    #         print(j)

def main(offset):
    url = "http://maoyan.com/board/4?offset="+ str(offset)
    html = get_one_page(url)
    for item in parse_one_page(html):
        print(item)
        write_to_file(item)


if __name__ == '__main__':
    for i in range(10):
        main(i*10)




代码示例,使用2.7版本。注意字节码,在list中之输出ascii码,需要使用json格式将其输出改为utf-8
在yield追加encode编码格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值