首页 > 其他分享 >feapder框架爬虫实战

feapder框架爬虫实战

时间:2024-06-01 11:46:56浏览次数:15  
标签:实战 m3u8 url feapder request 爬虫 response item self

# -*- coding: utf-8 -*-
"""
Created on 2024-05-31 10:21:56
---------
@summary:
---------
@author: me
"""
import json
from feapder.db.mysqldb import MysqlDB
import feapder

"""
# MYSQL
MYSQL_IP = "127.0.0.1"
MYSQL_PORT = 3306
MYSQL_DB = "spider"
MYSQL_USER_NAME = "root"
MYSQL_USER_PASS = "123456"
"""

"""
在自己的数据库要设置对应得表,建好表标后才可以数据导入数据库
"""

class FirstSpider(feapder.AirSpider):
db = MysqlDB()

def start_requests(self):

yield feapder.Request("https://18je.life/")

# def download_midware(self, request):
# # 这里使用代理使用即可117.184.37.22
# request.proxies = {"http": "http://113.121.22.221:9999"}
# # request.proxies = {"http": "http://182.34.103.249:9999","https": "https://182.34.103.249:9999"}
# return request
def parse(self, request, response):
divs = response.xpath('//div[@class="tab-head"]/a[position()>1]/@href').extract()
for num,url in enumerate(divs):
print(url)
yield feapder.Request(url = url,callback=self.parse_one,num=num)


def parse_one(self, request, response):
print(request.num)

next_page = response.xpath('//ul[@class="pagelist"]/li[last()]/a/@href').extract_first()
li_list = response.xpath('//ul[@class="list"]/li')
for i in li_list:
item= {}
item["num"] =request.num
item["title"] = i.xpath('.//div[@class="title"]/text()').extract_first()
item["cover"] = i.xpath('.//div[@class="vodlist_img"]/img/@data-original').extract_first()
video_url = i.xpath('./a/@href').extract_first()
yield feapder.Request(url=video_url, callback=self._parse_next, item=item)

#下面的代码是通过判断,深入一页一页的爬取数据
# if next_page == response.url:
# return 0
# yield feapder.Request(url=next_page, callback=self.parse_one)

def _parse_next(self, request, response):
# request.proxies = {"http": "http://117.69.236.252:8089"}
m3u8_ = response.text
m3u8_ = response.re('"url":"(.*?)",', m3u8_)[1]
m3u8_ = m3u8_.replace('\\', '')
item = request.item
# print("1:",m3u8_)
headers = {
"referer": "https://18je.life/",
"origin": "https://18je.life",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
# print(item)
yield feapder.Request(url=m3u8_, headers=headers,callback=self._parse_last,item=item)

def _parse_last(self, request, response):
#item必须每一个parse函数都要写
item = request.item
url_ = "https://vodvip888.com"
m3u8_ = response.text
m3u8_ = response.re('#EXT-X-STREAM-INF.*?\\n(.*?).m3u8', m3u8_)[0] + ".m3u8"
m3u8_ = url_ + m3u8_.replace('\\', '')
item['m3u8'] = m3u8_
print(item)
#在自己的数据库要设置对应得表,建好表标后才可以数据导入数据库 db_3为对应得表名称
self.db.add_smart("db_3",item)

#写入json文件
# item_ = json.dumps(item, ensure_ascii=False)
# with open('1.json','a',encoding='utf-8') as f:
# f.write(item_)
# f.write(',')


def start_callback(self):
pass
# with open('1.json','w') as f:
# f.write('[')
def end_callback(self):
pass
# with open('1.json', 'a') as f:
# f.write(']')




if __name__ == "__main__":
FirstSpider(thread_count=16).start()

标签:实战,m3u8,url,feapder,request,爬虫,response,item,self
From: https://www.cnblogs.com/Lhptest/p/18225752

相关文章

  • LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
    LLM大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战1.环境准备GPU设备:A10,3090,V100,A100均可.#设置pip全局镜像(加速下载)pipconfigsetglobal.index-urlhttps://mirrors.aliyun.com/pypi/simple/#安装ms-swiftpipinstall'ms-swift[llm]'-U......
  • Nginx 实战-02-nginx proxy_pass 服务代理访问 使用笔记 ubuntu nodejs
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • Ubuntu server 24 (Linux) Snort3 3.2.1.0 Guardian IPtables 联动实战 主动防御系统(
    一  Snort3安装配置,参考:Ubuntuserver24安装配置snort33.2.1.0网络入侵检测防御系统配置注册规则集-CSDN博客二  安装主动防御程序Guardian1下载,解压tarzxvfguardian-1.7.tar.gzcdguardian-1.7/2 配置#拷贝文件sudocpguardian.pl/usr/local/bin/......
  • Keras深度学习框架实战(1):图像分类识别
    1、绪论1.1图像分类的定义图像分类是计算机视觉领域中的一项基本任务,其定义是将输入图像分配给预定义类别中的一个或多个。具体来说,图像分类系统接受一个图像作为输入,并输出一个或多个类别标签,这些标签描述了图像中的内容。在图像分类中,通常使用有监督学习方法,这意味着......
  • 适用于linux的bilibiliB站直播间弹幕爬虫脚本
    适用于linux的bilibiliB站直播间弹幕爬虫脚本,命令行运行之,输入到命令行,部分内容参考自网络,代码底部可见原始代码出处BUFF:然而,经测试,每次爬只能读取10条弹幕记录,这就使得在(sleeptime*10)(每秒)<弹幕新增量(每秒)时出现弹幕丢失的情况,此时需要调短sleeptime,由于本脚本是......
  • MyBatis实战:如何将拼接的SQL打印到日志
    哈喽,大家好,我是木头左!一、前言在日常开发中,经常会遇到拼接SQL的情况,这时候,如何将拼接的SQL打印到日志,以便追踪和调试呢?本文将详细介绍MyBatis如何实现这一功能。二、MyBatis简介MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有......
  • Python实现SMA黏菌优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景黏菌优化算法(Slimemouldalgorithm,SMA)由Li等于2020年提出,其灵感来自于黏菌的扩散和觅食行为,属于元启发算法。具有收敛速度快,寻优能力强的特点。主......
  • Python实现SMA黏菌优化算法优化LightGBM回归模型(LGBMRegressor算法)项目实战
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景黏菌优化算法(Slimemouldalgorithm,SMA)由Li等于2020年提出,其灵感来自于黏菌的扩散和觅食行为,属于元启发算法。具有收敛速度快,寻优能力强的特点。主......
  • 从人工向智能化转变,企业级指标管理平台建设实战
    随着大数据技术和人工智能的发展,企业逐渐意识到构建一个集中化的指标管理平台的必要性。这样的平台旨在解决几个核心问题:首先,确保所有部门都能通过统一的入口提交指标需求,实现需求的透明化管理;其次,建立完善的指标管理体系,涵盖从需求定义、模型设计、数据集成、开发实施到应用监控......
  • 新闻列表页:通过WEUI框架实战我深入理解了块级作用域与点击事件
    前言今天简单的使用WEUI进行了新闻列表页的开发。在实现JS中发现了许多有趣的事情。今天就打算写一个文章给遇到了同样问题的同学进行解惑。话不多说,开始发车。以下是我要实现的效果内容,大家可以看看内容比较。代码我贴在文章末尾:框架分为以下两点:Nav导航栏搜索栏Nav导......