爬取豆瓣Top250并存储Excel

本文介绍了如何使用爬虫技术抓取豆瓣Top250电影的详细信息,并将数据有效存储到Excel文件中,以便进一步的数据分析和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫

网络爬虫:
网络爬虫是按照一定规则,自动抓取互联网信息的程序或者脚本。由于
互联网数据的多样性和资源的有限性,根据用户需求定向抓取相关网页
并分析成为目前主流的爬取策略

本质:
模拟浏览器打开网页,获取网页中我们想要的部分数据

编码规范:
一般python第一行需要加入
# -*-conding:utf-8 -*-或者 # coding=utf-8

python文件中可以加入main函数用于测试程序
if __name__ == "__main__":

 爬取豆瓣Top250并存储Excel

# -*- codeing = utf-8 -*-
# @Time : 2021/11/16 16:08
# @File : spider.py
# @Software: PyCharm

from bs4 import BeautifulSoup      # 网页解析,获取数据
import re       # 正则表达式,进行文字匹配
import urllib.request, urllib.error  # 制定URL,获取网页数据
import xlwt     # 进行Excel操作
import sqlite3  # 进行sqlite数据库操作

def main():
    baseurl = 'https://movie.douban.com/top250?start='
    # 爬取网页
    datalist = getData(baseurl)
    savepath = '豆瓣电影top250.xls'

    # 保存数据
    # saveData(datalist,savepath)

# 影片详情链接的规则
findLink = re.compile(r'<a href="(.*?)">')
# 影片图片
findImgSrc = re.compile(r'<img.*src="(.*?)"',re.S)  # re.S让换行符包含在字符中
# 影片片名
findTitle = 
### 使用Scrapy框架爬取豆瓣Top250电影信息导出至Excel #### 安装依赖库 为了使用Scrapy框架,需要先安装该框架以及其他必要的工具。可以通过pip命令来完成这些操作: ```bash pip install scrapy openpyxl pandas ``` 这会安装Scrapy用于创建和管理爬虫项目,`openpyxl` 和 `pandas` 则是为了后续将数据保存为Excel文件做准备。 #### 创建Scrapy项目 初始化一个新的Scrapy项目,命名为`douban_movie_top_250`: ```bash scrapy startproject douban_movie_top_250 cd douban_movie_top_250 ``` #### 编写Spider代码 在项目的`spiders`目录下新建一个名为`movie_spider.py`的文件,在其中定义具体的爬虫逻辑。此部分主要涉及解析HTML文档以提取所需的信息,将其封装成Item对象传递给pipeline进行进一步处理[^3]。 ```python import scrapy from ..items import DoubanMovieTop250Item class MovieSpider(scrapy.Spider): name = "movies" allowed_domains = ["douban.com"] start_urls = ['https://movie.douban.com/top250'] def parse(self, response): selector = '//ol[@class="grid_view"]/li' for item in response.xpath(selector): movie_item = DoubanMovieTop250Item() title_selector = './/span[@class="title"][1]/text()' rating_selector = './/span[@class="rating_num"]/@content' movie_item['title'] = item.xpath(title_selector).get().strip() movie_item['rating'] = float(item.xpath(rating_selector).get()) yield movie_item next_page_url = response.css('div.paginator span.next a::attr(href)').extract_first() if next_page_url is not None: yield scrapy.Request(response.urljoin(next_page_url)) ``` 这段代码实现了对每一页上的所有电影条目的遍历,从中抽取标题(`title`)与评分(`rating`)两个字段的数据,通过yield语句返回给下一个阶段——即Pipeline。 #### 数据项(Item)定义 编辑位于`items.py`内的类定义,确保其能容纳从网页上抓取下来的数据: ```python import scrapy class DoubanMovieTop250Item(scrapy.Item): # define the fields for your item here like: title = scrapy.Field() rating = scrapy.Field() ``` #### 处理数据存储(Pipeline) 最后一步是在`pipelines.py`中实现自定义管道功能,以便把收集到的信息存入Excel文件内。这里利用了Pandas库简化了这一过程: ```python import pandas as pd class SaveToExcelPipeline(object): def __init__(self): self.items = [] def process_item(self, item, spider): self.items.append(dict(item)) return item def close_spider(self, spider): df = pd.DataFrame(self.items) df.to_excel('./output/douban_movies.xlsx', index=False) ``` 上述代码片段展示了如何捕获传来的每一项记录,最终一次性全部写出到指定路径下的Excel工作簿里去[^1]。 配置settings.py使得上面编写的Pipeline生效: ```python ITEM_PIPELINES = { 'your_project_name.pipelines.SaveToExcelPipeline': 300, } ``` 以上就是整个流程的大致介绍,按照这样的方式设置好之后就可以启动爬虫程序了。运行如下命令即可开始采集任务: ```bash scrapy crawl movies ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员shy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值