python爬虫之feapder.AirSpider轻量爬虫案例:豆瓣

  1. 创建feaderSpider项目:feapder create -p feapderSpider,已创建可忽略
  2. 进入feapderSpider目录:cd .\ feapderSpider\spiders
  3. 创建爬虫:feapder create -s airSpiderDouban,选择AirSpider爬虫模板,可跳过1、2直接创建爬虫文件
  4. 配置邮件报警:报警配置163邮箱,https://feapder.com/#/source_code/%E6%8A%A5%E8%AD%A6%E5%8F%8A%E7%9B%91%E6%8E%A7
    在这里插入图片描述
    在这里插入图片描述
  5. setting.py打开mysql配置,无setting.py文件,运行命令feapder create --setting
    # # MYSQL
    MYSQL_IP = "localhost"
    MYSQL_PORT = 3306
    MYSQL_DB = "video"
    MYSQL_USER_NAME = "root"
    MYSQL_USER_PASS = "root"# # REDIS
    # # ip:port 多个可写为列表或者逗号隔开 如 ip1:port1,ip2:port2 或 ["ip1:port1", "ip2:port2"]
    REDISDB_IP_PORTS = "localhost:6379"
    REDISDB_USER_PASS = ""
    REDISDB_DB = 0
    # 连接redis时携带的其他参数,如ssl=True
    REDISDB_KWARGS = dict()
    # 适用于redis哨兵模式
    REDISDB_SERVICE_NAME = ""# # 去重
    ITEM_FILTER_ENABLE = True # item 去重
    ITEM_FILTER_SETTING = dict(filter_type=1,  # 永久去重(BloomFilter) = 1 、内存去重(MemoryFilter) = 2、 临时去重(ExpireFilter)= 3、轻量去重(LiteFilter)= 4name="douban"
    )# # 邮件报警
    EMAIL_SENDER = "123123123@163.com"  # 发件人
    EMAIL_PASSWORD = "EYNXMBWJKMLZFTKQ"  # 授权码
    EMAIL_RECEIVER = ["123123123@163.com"]  # 收件人 支持列表,可指定多个
    EMAIL_SMTPSERVER = "smtp.163.com"  # 邮件服务器 默认为163邮箱
    
  6. 创建item:feapder create -i douban,选择item,需要现在数据库创建表
    CREATE TABLE IF NOT EXISTS douban(id INT AUTO_INCREMENT,title VARCHAR(255),rating FLOAT,quote VARCHAR(255),intro TEXT,PRIMARY KEY(id))
    
  7. 修改douban_item.py文件
    # -*- coding: utf-8 -*-
    """
    Created on 2023-10-08 16:17:51
    ---------
    @summary:
    ---------
    @author: Administrator
    """from feapder import Itemclass DoubanItem(Item):"""This class was generated by feapdercommand: feapder create -i douban"""__table_name__ = "douban"__unique_key__ = ["title","quote","rating","title"] # 指定去重的key为 title、quote,最后的指纹为title与quote值联合计算的md5def __init__(self, *args, **kwargs):super().__init__(**kwargs)# self.id = Noneself.intro = Noneself.quote = Noneself.rating = Noneself.title = None
  8. 爬虫文件:air_spider_douban.py
    # -*- coding: utf-8 -*-
    """
    Created on 2023-10-06 15:36:09
    ---------
    @summary:
    ---------
    @author: Administrator
    """import feapder
    from items.douban_item import DoubanItem
    from feapder.network.user_agent import get as get_ua
    from requests.exceptions import ConnectTimeout,ProxyError
    from feapder.utils.email_sender import EmailSender
    import feapder.setting as settingclass AirSpiderDouban(feapder.AirSpider):def __init__(self, thread_count=None):super().__init__(thread_count)self.request_url = 'https://movie.douban.com/top250'def start_requests(self):yield feapder.Request(self.request_url)def download_midware(self, request):request.headers = {'User-Agent': get_ua()}return requestdef parse(self, request, response):video_list = response.xpath('//ol[@class="grid_view"]/li')for li in video_list:item = DoubanItem()item['title'] = li.xpath('.//div[@class="hd"]/a/span[1]/text()').extract_first()item['rating'] = li.xpath('.//div[@class="bd"]//span[@class="rating_num"]/text()').extract_first()item['quote'] = li.xpath('.//div[@class="bd"]//p[@class="quote"]/span/text()').extract_first()detail_url = li.xpath('.//div[@class="hd"]/a/@href').extract_first()if detail_url:yield feapder.Request(detail_url, callback=self.get_detail_info, item=item)# 获取下一页数据next_page_url = response.xpath('//div[@class="paginator"]//link[@rel="next"]/@href').extract_first()if next_page_url:yield feapder.Request(next_page_url,callback=self.parse)def get_detail_info(self, request, response):item = request.itemdetail = response.xpath('//span[@class="all hidden"]/text()').extract_first() or ''if not detail:detail = response.xpath('//div[@id="link-report-intra"]/span[1]/text()').extract_first() or ''item['intro'] = detail.strip()yield itemdef exception_request(self, request, response, e):prox_err = [ConnectTimeout,ProxyError]if type(e) in prox_err:request.del_proxy()def end_callback(self):with EmailSender(setting.EMAIL_SENDER,setting.EMAIL_PASSWORD) as email_sender:email_sender.send(setting.EMAIL_RECEIVER, title='python',content="爬虫结束")if __name__ == "__main__":AirSpiderDouban(thread_count=5).start()
  9. feapder create -p feapderSpider根据该命令创建的项目下会有main文件,除了单独运行爬虫文件,可以在main文件中运行,一般用于运行多个爬虫
    from feapder import ArgumentParser
    from spiders import *def crawl_air_spider_douban():"""AirSpider爬虫"""spider = air_spider_douban.AirSpiderDouban()spider.start()if __name__ == "__main__":parser = ArgumentParser(description="爬虫练习")parser.add_argument("--crawl_air_spider_douban", action="store_true", help="豆瓣AirSpide", function=crawl_air_spider_douban)parser.run("crawl_air_spider_douban")
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu18.4(后改为20.4)部署chatglm2并进行基于 P-Tuning v2 的微调

下载驱动 NVIDIA显卡驱动官方下载地址 下载好对应驱动并放在某个目录下, 在Linux系统中安装NVIDIA显卡驱动前,建议先卸载Linux系统自带的显卡驱动nouveau。 禁用nouveau 首先,编辑黑名单配置。 vim /etc/modprobe.d/blacklist.conf 在文件的最后添加…

Vue--》简易资金管理系统后台项目实战(前端)

今天开始使用 vue3 + ts + node 搭建一个简易资金管理系统的前后端分离项目,因为前后端分离所以会分两个专栏分别讲解前端与后端的实现,后端项目文章讲解可参考:后端链接,我会在前后端的两类专栏的最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运…

SpringCloud 微服务全栈体系(五)

第七章 Feign 远程调用 先来看我们以前利用 RestTemplate 发起远程调用的代码: 存在下面的问题: 代码可读性差,编程体验不统一 参数复杂 URL 难以维护 Feign 是一个声明式的 http 客户端,官方地址:https://github.…

CTF-Web(3)文件上传漏洞

笔记目录 CTF-Web(2)SQL注入CTF-Web(3)文件上传漏洞 1.WebShell介绍 (1)一句话木马定义 一种网页后门,以asp、php、jsp等网页文件形式存在的一种命令执行环境,而 一句话木马往往只有一行WebShell代码。 作用: 攻击获得网站控制权限 查看、修改…

删除元素专题

这篇也是凑数的 ... 题目 : LeetCode 27.移除元素 : 27. 移除元素 分析 : 快慢指针 : 定义两个指针slow和fast,初始值都是0。Slow之前的位置都是有效部分,fast表示当前要访问的元素。 这样遍历的时候,fast不断向后移动: 如果nums[fast…

实战经验分享FastAPI 是什么

FastAPI 是什么?FastAPI实战经验分享 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7e9e23e6fe3444238413d91f37064b65.png](https://fastapi.tiangolo.com/) FastAPI 是一个先进、高效的 Python Web 框架,专门用于构建基于 Python 的 API。它是…

读图数据库实战笔记02_图数据建模

1. 概念 1.1. 实体 1.1.1. 通常用名词来表示 1.1.2. 描述一个领域中的事物或者事物类型 1.1.2.1. 汽车 1.1.2.2. 用户 1.1.2.3. 地理位置 1.1.3. 在逻辑模型和技术实现过程中,实体通常会变成“顶点” 1.2. 关系 1.2.1. 用动词(或动词短语&#…

【错误解决方案】ModuleNotFoundError: No module named ‘cPickle‘

1. 错误提示 在python程序中试图导入一个名为cPickle的模块,但Python提示找不到这个模块。 错误提示:ModuleNotFoundError: No module named cPickle 2. 解决方案 实际上,cPickle是Python的pickle模块的一个C语言实现,通常用于…

【计算机网络笔记】Web缓存/代理服务器技术

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

【2021集创赛】Robei杯一等奖:基于Robei EDA工具的隔离病房看护机器人设计

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位:重庆交通大学 队伍名称:一丘之貉 指导老师:毕波 李艾星 参赛队员:郁航 张坤 秦衡 总决赛奖项:Robei杯一等奖…

内网穿透工具之NATAPP(一)

使用工具前,有必要了解一下什么是内网穿透吧! 内网穿透简单来说就是将内网外网通过natapp隧道打通,让内网的数据让外网可以获取。比如常用的办公室软件等,一般在办公室或家里,通过拨号上网,这样办公软件只有在本地的局…

SpringCloud 微服务全栈体系(六)

第八章 Gateway 服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管…

【Selenium】提高测试爬虫效率:Selenium与多线程的完美结合

前言 使用Selenium 创建多个浏览器,这在自动化操作中非常常见。 而在Python中,使用 Selenium threading 或 Selenium ThreadPoolExecutor 都是很好的实现方法。 应用场景: 创建多个浏览器用于测试或者数据采集;使用Selenium 控…

JVM虚拟机详解

目录 01JVM由哪些部分组成/运行流程 什么是程序计数器 详细介绍堆 介绍方法区(Method Area) 直接内存 虚拟机栈(Java Virtual machine Stacks) 垃圾回收是否涉及栈内存 栈内存分配越大越好吗 方法内的局部变量是否线程安全 什么情况下会导致栈…

WSL——ubuntu中anaconda换源(conda、pip)

1、conda 打开Ubuntu,输入下列命令。 conda config --set show_channel_urls yes 在文件管理器地址栏,输入:\\wsl$。打开Ubuntu根路径,其中显示了.condarc文件。 以文本形式打开,并输入要换的源,保存即可。…

【QT】信号和槽能自动传递参数

一、前置示例代码 main.cpp #include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv); // 应用程序对象a&#xff0c;在Qt中&#xff0c;应用程序对象&#xff0c;有且仅有一个。Widget w; // 窗口对…

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

【AD9361 数字接口CMOS LVDSSPI】B 并行数据之CMOS

##接上一篇&#xff1b; 本节介绍 AD9361 数字接口CMOS &LVDS&SPI最后一张表中四种工作模式的具体配置及时序波形图。 目录 1、单端口半双工模式 &#xff08;CMOS&#xff09; *代称 SHC*换句话说&#xff0c;最大值是12‘b0111_1111_1111&#xff0c;即0x7FF&#xf…

Selenium自动测试框架

selenium3 selenium元素的定位css 选择器Xpath 操作测试对象 API添加等待浏览器的操作键盘操作鼠标操作定位一组元素下拉框弹窗上传文件 <dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><…

科大讯飞发布讯飞星火 3.0;开源AI的现状

&#x1f680; 科大讯飞发布讯飞星火 3.0&#xff0c;综合能力超越ChatGPT&#xff08;非GPT-4版&#xff09; 摘要&#xff1a;科大讯飞在2023全球1024开发者节上宣布讯飞星火 3.0正式发布&#xff0c;号称综合能力已超越ChatGPT。据介绍&#xff0c;星火认知大模型 V3.0在文…