zoukankan      html  css  js  c++  java
  • Python 爬取 猫眼

    1.

    import requests
    import re
    import pymongo
    
    MONGO_URL='localhost'#建立连接
    MONGO_DB='Maoyan'#创建数据库
    
    client=pymongo.MongoClient(MONGO_URL)#连接数据库
    db=client[MONGO_DB]#创建数据库
    
    #获得一页的响应提信息
    def get_one_page(url):
        headers={
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
        }
        response = requests.get(url,headers=headers)#发送请求,获得响应
        return response.text #获得响应体信息,并返回
    
    #解析请求的信息,并通过正则表达式提取想要的信息:电影名称、排名等
    def parse_page(html):
        #通过正则表达式进行匹配
        pattern=re.compile('<dd>.*?board-index.*?>(.*?)</i>.*?data-src.*?"(.*?)".*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>',re.S)
        results=re.findall(pattern,html)#获得单页响应头的信息,获得的是一个列表
        #对产生的列表list进行for循环
        for result in results:
            #通过字典(dict),组建信息
            movies={
                'rate':result[0],
                'img_url':result[1],
                'name':result[2],
                'actor':result[3].strip()[3:],
                'time':result[4][5:],
                'score':result[5]+result[6]
            }
            #保存到数据库
            save_mongo(movies)
    
    #保存到数据库的函数
    def save_mongo(info):
        if db['Movies'].insert(info):#将信息插入到数据库
            print('保存成功:',info)
        else:
            print('保存失败:',info)
    
    #实现主流程
    def main():
        #有10页,通过来获取每一页的信息
        for i in range(10):
            url='http://maoyan.com/board/4?offset='+str(i*10)#构建每一页的请求url
            html=get_one_page(url)#进行请求
            parse_page(html)#进行响应体的解析,并保存到数据库
    
    if __name__=='__main__':
        main()#调用主体函数

    2.

    import requests
    import re
    import pymongo
    
    MONGO_URL='localhost'#
    MONGO_DB='Maoyan'
    MONGO_TABLE='MoviesTop100'
    
    client=pymongo.MongoClient(MONGO_URL)
    db=client[MONGO_DB]
    
    def save_to_mongo(info):
        if db[MONGO_TABLE].insert(info):
            print('保存成功',info)
        else:
            print('保存失败',info)
    
    def get_one_page(url):
        headers={
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
        }
        html = requests.get(url=url,headers=headers).text
        return html
    
    def get_movies_info(html):
        pattern=re.compile('<dd>.*?title="(.*?)".*?<p.*?star.*?>(.*?)</p>.*?<p.*?releasetime.*?>(.*?)</p>.*?<i.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>',re.S)
        results = re.findall(pattern,html)
        for result in results:
            movies = {}
            movies['name']=result[0]
            movies['actor']=result[1].strip()[3:]
            movies['time']=result[2].strip()[5:]
            movies['rate']=result[3]+result[4]
            save_to_mongo(movies)
    
    #主体函数
    def main():
        for i in range(10):
            url = 'http://maoyan.com/board/4?offset='+str(i*10)
            html=get_one_page(url)#完成请求,获取响应体的超文本
            get_movies_info(html)#完成信息提取
    
    if __name__=='__main__':
        main()
  • 相关阅读:
    php 时间问题
    php语言
    高级查询
    数据库的查询详情
    数据库的创建和增删改查,外键和主键的创建
    数据库
    js的基本语句和语法
    JS的脚本语言
    样式、格式布局
    表单的元素和样式表
  • 原文地址:https://www.cnblogs.com/mysterious-killer/p/10156685.html
Copyright © 2011-2022 走看看