爬取猫眼电影评分等信息

使用正则表达式爬取猫眼电影top100的评分等信息

正则匹配

正则.png
import json

import requests
from requests import RequestException
import re


def get_one_page(url, headers):
    # 构建异常处理
    try:
        # 猫眼电影有反扒机制,需要构建请求头
        response = requests.get(url, headers=headers)
        # 判断是否请求成功
        if response.status_code == 200:
            return  response.text
        return None
    except RequestException:
        return None


def parse_one_page(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)
    items = re.findall(pattern, html)
    # 以字典的形式输出
    for i in items:
       yield {
           'idnex': i[0],
           'image': i[1],
           'title': i[2],
           'actor': i[3].strip()[3:],
           'time': i[4].strip()[5:],
           'score': i[5] + i[6]
       }


def write_to_file(content):
    # 使用utf-8解码
    with open('result.txt', 'a', encoding='utf-8') as f:
        f.write(json.dumps(content, ensure_ascii=False) + '\n')
        f.close()


def main(offset):
    # 猫眼电影榜单100,点击下一页后会是数字按10增加的规律
    url = 'http://maoyan.com/board/4' + str(offset)
    headers = {
        # 加入自己的请求头信息
        # 请求头信息在网页里header里查看
        'User-Agent': '加入自己的请求头'
    }
    html = get_one_page(url, headers)
    # 写入文件
    for item in parse_one_page(html):
        print(item)
        write_to_file(item)


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

可以用进程池来加快加载速度

if __name__ == '__main__':
    pool = Pool()
    pool.map(main, [i * 10 for i in range(10)])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容