爬虫综合大作业

news/2024/7/19 8:38:01 标签: 爬虫, python, 操作系统

一、爬虫对象

豆瓣电影里面喜剧片的排行榜:

二、代码如下:

设置了多个user-agent,模拟成真实的浏览器去提取内容:

复制代码
user = ["Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0",\
        "Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50",\
        "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",\
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",\
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",\
        "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",\
        "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",\
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",\
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",\
       "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER"]
 
def get_user():
    user_id = random.choice(user)
    return user_id
复制代码

抓取电影的信息:

复制代码
#获取索引页
def get_index_page(url):
    try:
        headers = {'user-agent':get_user()}
        response = requests.get(url,headers=headers)
        response.encoding = 'utf-8'
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        print('获取索引页错误')
        time.sleep(random.random()*3)
        return get_index_page(url)

#解析索引页
def parse_index_page(url):
    data_list = get_index_page(url)
    dataUrl = json.loads(data_list)
    detail_list = []
    if dataUrl:
        for item in dataUrl:
            detail_list.append(item['url'])
    return detail_list

#获取详情页
def get_movie_page(url):
    detailUrl = parse_index_page(url)
    movie = []
    for i in range(len(detailUrl)):
        html = detailUrl[i]
        headers = {'user-agent':get_user()}
        time.sleep(random.random()*3)
        res = requests.get(url=html,headers=headers)
        res.encoding = 'utf-8'
        soup=BeautifulSoup(res.text,"html.parser")
        movie_dict = {}
        movie_dict['name'] = soup.find("span", {"property": "v:itemreviewed"}).text
        movie_dict['evaluate'] = soup.find("span", {"property": "v:votes"}).text.strip( '' )
        movie_dict['score'] = soup.find("strong", {"property": "v:average"}).text.strip()
        movie_dict['director'] = soup.find("a", {"rel": "v:directedBy"}).text
        movie_dict['region'] = soup.find("span", text="制片国家/地区:").nextSibling.strip()
        movie_dict['year'] = soup.find("span", {"class": "year"}).text.lstrip("(").rstrip(")")
        movie.append(movie_dict)
    return movie
复制代码

三、把爬的电影数据保存起来

部分截图(一共抓取了600部电影):

四、数据分析

通过此柱形图可以发现美国地区居于首位,毕竟美国发展得比较快,电影事业崛起。

 

通过对前三个国家的喜剧片分析,近年来美国拍的喜剧片逐步上升,法国和日本就平平而过。

通过分析导演拍喜剧电影的评分和评价数,刘镇伟导演的喜剧电影应该更多人喜欢看,评价又多评分也高,大家若想看喜剧电影的话,不妨找找刘镇伟导演的喜剧电影,仅供大家参考。

推荐:这几部电影评分比较高,看的人也比较多,喜欢看喜剧电影的不妨找这几部看看。

转载于:https://www.cnblogs.com/AllanChen-/p/11053947.html


http://www.niftyadmin.cn/n/1084263.html

相关文章

构建内核树

够建内核树 1. 下载内核源代码 apt-cache search linux-source 其中显示的有:linux-source-2.6.20, 没有和我的内核版本完全匹配,不过也没关系,直接下载就可以了: apt-get install linux-source-2.6.20 2. 下载后,在/…

如何上传html文件到公众号,【技巧】MarkDown如何转换为Html,直接复制到公众号,今日头条...

【技巧】MarkDown如何转换为Html,直接复制到公众号,今日头条2020年07月10日| 萬仟网IT编程| 我要评论一. 问题:今日头条的文本编辑器并不支持直接导入MarkDown,那么我们在其他平台如CSDN写的文章导出的.md文件如何不费力气地导入到…

JSP,EL和JSTL

JSP&#xff1a; 1、指令&#xff1a; *作用&#xff1a;用于配置JSP页面&#xff0c;导入资源文件。 *格式&#xff1a;<% 指令名称 属性1属性值1 属性2属性值2 ...> *分类&#xff1a; 1、page&#xff1a;配置JSP页面。一些指令&#xff1a; *contentType&#xff1a;…

删除svn信息

最近用svn&#xff0c;在给项目打包的时候&#xff0c;总是会把svn的信息也打进去&#xff0c;这样就使得jar很大&#xff0c;非常烦。最后在网上查了一下删除svn信息的办法。现摘录如下&#xff1a; 1.找到项目的根目录&#xff0c;在命令行中换盘 2.在命令行中执行命令&#…

请求 - Fetch(未完)

概念和用法 可以被使用到更多地应用场景中&#xff1a;无论是service workers、Cache API、又或者是其他处理请求和响应的方式&#xff0c;甚至是任何一种需要你自己在程序中生成响应的方式。 Cache 接口为缓存的 Request / Response 对象对提供存储机制为有关联性的概念&#…

用excel进行设计(82):数据表的设计规范

数据表的设计规范 1&#xff0e; 通俗地理解三个范式&#xff1a; 第一范式&#xff1a;1NF是对属性的原子性约束&#xff0c;要求属性具有原子性&#xff0c;不可再分解&#xff1b;也就是字段是不可再分解的&#xff0c;比如“姓名”字段&#xff08;数据项&#xff09;可以…

J2ME中解决java.lang.NoClassDefFoundError

做J2ME开发的兄弟都知道&#xff0c;模拟器惹不起&#xff0c;真机更是惹不起。经常在不知名的情况下&#xff0c;会给我们一个java.lang.NoClassDefFoundError。现在把小弟已知的解决办法总结一下&#xff1a; 1.jdk设置不对&#xff0c;应该是1.4 2.项目没有设置模拟器wtk&am…

HBuilder X 中使用模拟器进行App开发

第一步&#xff1a;下载HBuilder X&#xff08;建议下载开发版&#xff09; 第二步&#xff1a;下载个模拟器&#xff0c;我这里使用的是&#xff08;MuMu模拟器&#xff09; 第三步:在HBuilder X 中新建一个项目 然后&#xff0c;打开模拟器 如果 HBuilder x 未检测到 模拟器&…