scrapy爬虫的几个案例

博主分享了在mac环境下使用scrapy1.4.0爬取清华大学就业信息网的实践经验。通过分析网页结构,提取div标签内的就业信息,并通过for循环遍历多页数据。代码中还包括将爬取结果作为附件发送邮件的功能。实现过程涉及到了scrapy的爬取、数据处理及邮件发送。

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

lz最近在学习scrapy爬虫框架,对于此框架,我自己用两个案例进行了实践,初步对这个框架掌握,就写一篇博客来记录下我的学习过程。

一、我的环境

mac+python2.7.6+scrapy1.4.0版本。对于scrapy在mac中的安装过程就不做介绍了。

二、爬取清华大学就业信息网的就业信息板块就业信息

清华大学就业信息网网址:

http://career.tsinghua.edu.cn/,具体爬取招聘信息板块内容,网址为:http://career.cic.tsinghua.edu.cn/xsglxt/f/jyxt/anony/xxfb

首先是分析此网页信息,需要把其中的每一条就业信息爬下来,在具体的html中可以通过一些标签来完善。具体的标签为/div[@class='content teacher']/div[2]/ul[@class='list'],在这个标签的路径下,我们可以进行提取。因为这一页中具体有10几条数据,所以需要用for循环来输出即可。但是因为这个招聘信息有好几页,所以需要进行轮询查找相关的页面并提取相关的页面信息进行提取。关于具体取哪个页面,这个参数是放在post提交数组的form_data的pgno字段。

具体的scrapy代码如下所示:

# -*- coding: utf-8 -*-

import re
import json
import datetime

from scrapy.selector import Selector
import scrapy.spiders
from scrapy.utils.response import get_base_url
from tsinghua.items import TsinghuaItem
import urlparse
from scrapy.utils.url import urljoin_rfc
import datetime,time
import codecs
import smtplib
from email.mime.application import MIMEApplication
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from scrapy.mail import MailSender
from email.utils import parseaddr,formataddr
from email.header import Header
from email.mime.base
### Scrapy 爬虫项目实战案例 Scrapy 是一种强大的 Python 爬虫框架,广泛应用于网页抓取和数据分析领域。以下是基于 Scrapy几个经典实战案例及其具体实现方式。 #### 1. 豆瓣电影评分爬取 此案例的目标是从豆瓣网站上获取热门电影的名称、评分以及短评等内容[^1]。 - **创建项目**: 使用 `scrapy startproject douban` 命令初始化一个新的 Scrapy 项目。 - **定义 Spider**: 编写爬虫逻辑来访问目标页面并提取所需的数据字段。 - **启用 Pipeline**: 将解析后的数据保存到本地文件或数据库中。 ```python import scrapy class DoubanSpider(scrapy.Spider): name = 'douban' allowed_domains = ['movie.douban.com'] start_urls = ['https://movie.douban.com/top250'] def parse(self, response): for movie in response.css('div.item'): yield { 'title': movie.css('span.title::text').get(), 'rating': movie.css('span.rating_num::text').get() } ``` #### 2. 百度新闻关键词搜索结果采集 该实例展示了如何利用 Scrapy 抓取百度搜索引擎返回的结果列表[^2]。 - **启动爬虫**: 执行命令 `scrapy crawl baidu -o output.json` 导出 JSON 文件。 - **动态参数传递**: 支持通过 `-a keyword=example` 来指定不同的查询条件。 ```python def __init__(self, keyword=None, *args, **kwargs): super(BaiDuSpider, self).__init__(*args, **kwargs) self.start_urls = [f'https://www.baidu.com/s?wd={keyword}'] ``` #### 3. 分布式爬虫架构设计 (结合 Redis) 为了提高效率,在大规模场景下可以引入消息队列工具如 Redis 实现多节点协同工作模式[^4]。 - **环境搭建**: 安装必要的扩展包 `redis-py`, 并确认服务端已正常开启监听状态。 - **修改配置项**: 更新默认调度器为支持持久化的版本;设置去重过滤机制防止重复请求同一链接地址。 ```python # settings.py 中的关键部分 SCHEDULER = "scrapy_redis.scheduler.Scheduler" DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" REDIS_URL = 'redis://localhost:6379' # 自定义连接字符串 ``` --- ### 注意事项 当构建复杂的 Web Scraper 应用程序时,请务必遵循以下准则以确保长期稳定性和合法性: - 遵守目标站点的服务条款(TOS),避免频繁触发反爬策略; - 设置合理的下载延迟时间间隔(`DOWNLOAD_DELAY`)减少服务器负载压力; - 对异常情况进行妥善处理以免中断整个进程流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值