python爬取猫眼电影排名

系统 1945 0

python爬取猫眼电影排名

本次爬虫主要使用requests库爬取和正则表达式re解析,下面进行简要分析

1、项目流程

1、获取猫眼电影排行榜一页的页面信息,通过requests.get获得

2、使用正则表达式解析一个页面的页面信息,获得需要内容

3、通过生成器爬取多个页面内容,输出

4、将所得到内容存入字典中,输出

5、将所得到信息存储到MongoDB数据库中

2、项目结果

成功爬取,存入mongodb数据库
python爬取猫眼电影排名_第1张图片
mongodb查询 python爬取猫眼电影排名_第2张图片

3、项目代码

            
              #!/usr/bin/env python 
# -*- coding:utf-8 -*-
#作者:nuancolor
#网址:暂无


import requests
from requests.exceptions import RequestException
import re
import pymongo

# 配置数据库信息
MONGO_HOST = "127.0.0.1"  # 主机IP
MONGO_URl = 'localhost'
MONGO_DB = 'test'  # 数据库名
MONGO_TABLE = 'movies'  # 表名

# 连接数据库
client = pymongo.MongoClient(MONGO_URl)
db = client[MONGO_DB]


# 存入数据库
def save_url_to_Mongo(result):
    try:
        if db[MONGO_TABLE].insert_one(result):
            print('存储到MongoDB成功', result)
    except Exception:
        print('存储到MongoDb失败', result)


# 获取
def get_one_page(url):
    try:
        response = requests.get(url)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None


# 解析
def parse_one_page(html):
    pattern = re.compile('
              
.*?board-index.*?>(\d+).*? ' + ' (.*?)

.*?star">(.*?)

' + '.*?>(.*?)

.*?integer">(.*?)' + '.*?fraction">(.*?).*?
', re.S) items = re.findall(pattern, html) # 以字典的形式存储起来 headurl = 'https://maoyan.com' for item in items: yield { 'index': item[0], 'url': headurl + item[1], 'title': item[2], 'actor': item[3].strip()[3:], 'time': item[4].strip()[5:], 'score': item[5] + item[6] } def main(offset): url = 'https://maoyan.com/board/4?offset=' + str(offset) html = get_one_page(url) for item in parse_one_page(html): print(item) result = item save_url_to_Mongo(result) if __name__ == '__main__': for i in range(3): main(i * 10)

4、遇到的问题及解决

1、进行页面解析是书写正则表达式一定要规范,不然会出现报错或解析内容为空列表

2、爬取电影的url发现页面只爬取到网页链接的后半部分,在进行数据处理是进行相应补充即可

3、连接pymongo是报错,没有发现该库,我使用的是spyder运行项目,换pycharm部署之后成功。

小结

本次项目主要是对requests库和re库的一个熟练使用,途中出现的问题等都加深了对爬虫处理的理解与应用。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论