爬虫案例—抓取豆瓣电影的电影名称、评分、简介、评价人数

简介: 爬虫案例—抓取豆瓣电影的电影名称、评分、简介、评价人数

爬虫案例—抓取豆瓣电影的电影名称、评分、简介、评价人数
豆瓣电影网址:https://movie.douban.com/top250

主页截图和要抓取的内容如下图:

image.png

分析:
第一页的网址:https://movie.douban.com/top250?start=0&filter=

第二页的网址:https://movie.douban.com/top250?start=25&filter=

第三页的网址:https://movie.douban.com/top250?start=50&filter=

以此类推,不难发现页面的网址的start值与25多倍数有关。这样可以格式化网址为:f"https://movie.douban.com/top250?start={i*25}&filter="。

按F12进入浏览器的开发者模式,用xpath匹配到页面所有列表标签。如下图:

image.png

进一步分析,进入li标签内,用xpath匹配到对应的电影标题和评分,评价人数。每部电影的详细简介在电影的浏览页面内,需要先获取到电影的href,然后再进行获取。

image.png

其他内容的匹配与上图类似,不再赘述。

具体的代码如下:

import requests
from lxml import etree
import time


headers = {
   
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}


# 获取页面响应内容函数
def get_page(url):
    res = requests.get(url, headers=headers)
    res.encoding = res.apparent_encoding
    html = res.content.decode() # 如果用res.text,某些页面的简介会返回乱码
    return html


# 返回响应页面的所有电影列表标签
def get_li_lst(url):
    tree = etree.HTML(get_page(url))
    li_lst = tree.xpath('//ol/li')
    return li_lst


# 获取电影名,评分,评价人数的函数
def get_page_datail(url):
    li_lst = get_li_lst(url)
    for li in li_lst:
        print('-' * 50)
        title = li.xpath('.//div[@class="hd"]/a/span[1]/text()')
        print('电影名:', title[0], end=' | ')
        score = li.xpath('./div[@class="item"]//div[@class="star"]/span[2]/text()')
        print('评分:', score[0], end=' | ')
        person_num = li.xpath('./div[@class="item"]//div[@class="star"]/span[4]/text()')
        print('评价人数:', person_num[0])
        movie_href = li.xpath('.//div[@class="hd"]/a/@href')[0]
        movie_html = get_page(movie_href)
        movie_tree = etree.HTML(movie_html)
        movie_short = movie_tree.xpath('//div[@class ="indent"]//span[@property="v:summary"]/text()')
        print('电影简介:')
        print(movie_short[0].strip())
        time.sleep(0.5)

    print('-' * 50)


if __name__ == '__main__':

    page_num = int(input('请输入要获取的页码数: '))

    for i in range(page_num):
        print(f'第{i + 1}页电影数据:')
        new_url = f'https://movie.douban.com/top250?start={i * 25}'
        time.sleep(0.3)
        get_page_datail(new_url)
        print()

运行结果如下图:

image.png

相关文章
|
25天前
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
|
25天前
|
数据采集 JavaScript 网络安全
为什么PHP爬虫抓取失败?解析cURL常见错误原因
豆瓣电影评分是电影市场的重要参考,通过网络爬虫技术可以高效采集评分数据,帮助电影制作和发行方优化策略。本文介绍使用PHP cURL库和代理IP技术抓取豆瓣电影评分的方法,解决反爬机制、网络设置和数据解析等问题,提供详细代码示例和优化建议。
为什么PHP爬虫抓取失败?解析cURL常见错误原因
|
1月前
|
数据采集 前端开发 JavaScript
除了网页标题,还能用爬虫抓取哪些信息?
爬虫技术可以抓取网页上的各种信息,包括文本、图片、视频、链接、结构化数据、用户信息、价格和库存、导航菜单、CSS和JavaScript、元数据、社交媒体信息、地图和位置信息、广告信息、日历和事件信息、评论和评分、API数据等。通过Python和BeautifulSoup等工具,可以轻松实现数据抓取。但在使用爬虫时,需遵守相关法律法规,尊重网站的版权和隐私政策,合理控制请求频率,确保数据的合法性和有效性。
|
2月前
|
数据采集 Python
python爬虫抓取91处理网
本人是个爬虫小萌新,看了网上教程学着做爬虫爬取91处理网www.91chuli.com,如果有什么问题请大佬们反馈,谢谢。
32 4
|
1月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
105 6
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
215 4
|
4月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
5月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
95 4
|
2月前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
209 66
|
1月前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
下一篇
DataWorks