爬取豆瓣美剧榜单

2023-12-14 17:18
文章标签 爬取 榜单 豆瓣 美剧

本文主要是介绍爬取豆瓣美剧榜单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

爬取豆瓣电影电影top250这种操作已经满足不了我们的需求,这种低端操作所需要的信息都存在于网页的源代码中,只需要使用xpath提取html信息就能完成操作。

需要注意的有三点:1.xpath工具的使用;2.使用text()提取html标签文本内容;3.异常的处理。

# created on July 24 2018
# author:Achilles#爬取豆瓣top250电影import requests
from lxml import etreewith open("D:\豆瓣电影top250.txt","w",encoding="utf-8") as f:count = 0for i in range(10):url = "https://movie.douban.com/top250?start={}".format(i * 25)headers = {"User_Agent":"Mozilla/5.0(compatible; NSIE 5.5; Windows10)"}#防止服务器拒绝访问data = requests.get(url,headers=headers).texts = etree.HTML(data)movies = s.xpath('//*[@id="content"]/div/div[1]/ol/li')for movie in movies:count += 1movie_name_chines = movie.xpath("./div/div[2]/div[1]/a/span[1]/text()")[0].strip()movie_name_normal = movie.xpath("./div/div[2]/div[1]/a/span[2]/text()")[0].strip()movie_staff = movie.xpath("./div/div[2]/div[2]/p[1]/text()")[0].strip()movie_year = movie.xpath("./div/div[2]/div[2]/p[1]/text()")[1].strip()movie_mark = movie.xpath("./div/div[2]/div[2]/div/span[2]/text()")[0].strip()movie_mark_people = movie.xpath("./div/div[2]/div[2]/div/span[4]/text()")[0].strip()try:#防止有的电影没有描述,抛出异常movie_desc = movie.xpath("./div/div[2]/div[2]/p[2]/span/text()")[0].strip()except IndexError:movie_desc = "暂无描述"f.write("电影排名: {}\n".format(count))f.write("电影名字: {}(译名)\t{}(原名)\n".format(movie_name_chines,movie_name_normal))f.write("电影职员: {}\n".format(movie_staff))f.write("电影年份: {}\n".format(movie_year))f.write("电影评分: {}({})\n".format(movie_mark,movie_mark_people))f.write("电影描述: {}\n".format(movie_desc))f.write("\n")

由于笔者最近沉迷权力的游戏和行死走肉等美剧,爬取完豆瓣电影top250后就想着爬取豆瓣上所有的美剧,很自然地使用了以下方法来爬取:

1.进入豆瓣首页找到美剧的url:
https://movie.douban.com/tv/#!type=tv&tag=%E7%BE%8E%E5%89%A7&sort=rank&page_limit=20&page_start=0

2.刚开始只爬取20个作为示范,网页url的意思很明确,每页20个,从0开始

3.找到相关信息的xpath

4.编写代码

# created on July 25 2018
# author:Achilles#爬取豆瓣美剧import requests
from lxml import etreewith open("D:\AmericanSeries.txt", "w", encoding="utf-8") as f:url = "https://movie.douban.com/tv/#!type=tv&tag=%E7%BE%8E%E5%89%A7&sort=rank&page_limit=20&page_start=0"headers = {"User_Agent": "Mozilla/5.0(compatible; NSIE 5.5; Windows10)"}  # 防止服务器拒绝访问data = requests.get(url, headers=headers).text# data = urllib.request.urlopen(url).read()s = etree.HTML(data)movies = s.xpath('//*[@id ="content"]/div/div[1]/div/div[4]/div/a')for movie in movies:movie_name = movie.xpath("./p/text()")movie_mark = movie.xpath("./p/strong/text()")f.write("美剧名字:\t{}".format(movie_name))f.write("美剧评分:\t{}".format(movie_mark))f.write("\n")

代码很简单,然而运行后并不能得到结果,调试发现movies是个空列表,确认xpath路径无误,于是查看网页源代码,发现网页源代码中没有我们需要的美剧信息。百度后发现这种情况通常是因为网站使用了动态生成技术来保护网站的信息。

于是参考这篇文章:https://blog.csdn.net/qq523176585/article/details/78693900的方法二,仔细检查网站的相关请求

发现这正是我们想要的美剧信息,右键,open in new tab ,发现这是一个json列表。

到这一步后,爬取美剧的难点已经得到解决,接下来的操作主要是针对这个列表展开。

#created on July 29 2018
#autor:Achillesimport requestswith open("D:\AmericanSeriseInDouban.txt","w",encoding="utf-8") as f:url = \"https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=rank&page_limit=99999&page_start=0"dict = requests.get(url).json()lists = dict['subjects']count = 1for list in lists:movie_name = list["title"]movie_mark = list["rate"]movie_http = list["url"]f.write("美剧排名: \t{}\n".format(count))f.write("美剧名字: \t{}\n".format(movie_name))f.write("美剧评分: \t{}\n".format(movie_mark))f.write("美剧地址: \t{}\n".format(movie_http))f.write("\n")count += 1

爬取成功:

可惜此网站接口仅存储了500个美剧信息,无法访问更多。

爬取豆瓣所有美剧的爬虫在业余时间会陆续更新。

这篇关于爬取豆瓣美剧榜单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/493369

相关文章

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

0基础学习爬虫系列:网页内容爬取

1.背景 今天我们来实现,监控网站最新数据爬虫。 在信息爆炸的年代,能够有一个爬虫帮你,将你感兴趣的最新消息推送给你,能够帮你节约非常多时间,同时确保不会miss重要信息。 爬虫应用场景: 应用场景主要功能数据来源示例使用目的搜索引擎优化 (SEO)分析关键词密度、外部链接质量等网站元数据、链接提升网站在搜索引擎中的排名市场研究收集竞品信息、价格比较电商网站、行业报告制定更有效的市场策略舆情

python网络爬虫(五)——爬取天气预报

1.注册高德天气key   点击高德天气,然后按照开发者文档完成key注册;作为爬虫练习项目之一。从高德地图json数据接口获取天气,可以获取某省的所有城市天气,高德地图的这个接口还能获取县城的天气。其天气查询API服务地址为https://restapi.amap.com/v3/weather/weatherInfo?parameters,若要获取某城市的天气推荐 2.安装MongoDB

硬盘数据恢复软件TOP4榜单出炉,选对方法竟然如此重要

这年头,信息多得不得了,数据对我们来说太重要了。但是,不管是咱们自己还是公司,都可能碰上丢数据的倒霉事,特别是不小心把硬盘里的东西删了。数据一丢,不光可能亏钱,工作和生活也可能受影响。好在,市面上有不少厉害的数据恢复软件,能在紧要关头帮我们把丢的数据找回来。今天,我就来给你介绍几款大家都说好的硬盘数据恢复软件! 一、Foxit全面数据恢复 即时通道 \https://www.pdf365.cn

【python】—— Python爬虫实战:爬取珠海市2011-2023年天气数据并保存为CSV文件

目录 目标 准备工作 爬取数据的开始时间和结束时间 爬取数据并解析 将数据转换为DataFrame并保存为CSV文件         本文将介绍如何使用Python编写一个简单的爬虫程序,以爬取珠海市2011年至2023年的天气数据,并将这些数据保存为CSV文件。我们将涉及到以下知识点: 使用requests库发送HTTP请求使用lxml库解析HTML文档使用dateti

爬虫二:获取豆瓣电影Top250(Requests+XPath+CSV)

描述: 在上一篇获取豆瓣图书Top250的基础上,获取豆瓣电影Top250的数据并将结果写入CSV文件中。 代码: # -*- coding: UTF-8 -*-import requestsfrom lxml import etreeimport timeimport csv# 从网页上获取电影数据moviedata = []count = 0for i in range(1

爬虫一:获取豆瓣图书Top250(Requests+XPath)

目的: 获取豆瓣图书Top250的所有书目信息。 豆瓣网址:https://book.douban.com/top250 代码: import requestsfrom lxml import etreeimport timefor i in range(10):url = 'https://book.douban.com/top250?start=' + str(25*i)data

scrapy 设置爬取深度 (七)

通过在settings.py中设置DEPTH_LIMIT的值可以限制爬取深度,这个深度是与start_urls中定义url的相对值。也就是相对url的深度。例如定义url为:http://www.domz.com/game/,DEPTH_LIMIT=1那么限制爬取的只能是此url下一级的网页。深度大于设置值的将被ignore。       如图:

scrapy自动多网页爬取CrawlSpider类(五)

一.目的。 自动多网页爬取,这里引出CrawlSpider类,使用更简单方式实现自动爬取。   二.热身。 1.CrawlSpider (1)概念与作用: 它是Spider的派生类,首先在说下Spider,它是所有爬虫的基类,对于它的设计原则是只爬取start_url列表中的网页,而从爬取的网页中获取link并继续爬取的工作CrawlSpider类更适合。 ࿰

Scrapy ——自动多网页爬取(抓取某人博客所有文章)(四)

首先创建project:   [python]  view plain  copy     转存失败重新上传取消<