首页 > 其他分享 >增量式爬取阳光热线网

增量式爬取阳光热线网

时间:2022-12-23 13:04:12浏览次数:41  
标签:url detail li item 阳光 增量 热线 div scrapy

- 增量式
- 概念:用于监测网站数据更新的情况。
- 核心机制:去重。redis的set实现去重

- 总结反爬机制:
- robots
- UA伪装
- 验证码
- 代理
- cookie
- 动态变化的请求参数
- js加密
- js混淆
- 图片懒加载
- 动态数据的捕获
- seleium:规避检测

1、创建scrapy startproject 项目名

2、创建虫子scrapy genspider -t crawl zjs www.xxx.com

3、配置文件UA伪装、日志等级、robots

4、虫子里面解析电影名称、详情页url、描述

5、items里面配置

6、虫子里面导入items

7、pipelines管道里面配置输入数据

8、配置文件开启管道

9、执行虫子scrapy crawl zjs

10、redis启动客户端:redis-cli.exe

查询所有的keys:keys *

查询长度:llen moiveData

查询数据:smembers movie_detail_urls

清空:flushall

zjs.py

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from redis import Redis
from zjsPro1.items import Zjspro1Item


class ZjsSpider(CrawlSpider):
conn = Redis(host='127.0.0.1', port=6379)
name = 'zjs'
# allowed_domains = ['www.xxx.com']
start_urls = ['https://www.4567tv.tv/index.php/vod/show/class/%E7%88%B1%E6%83%85/id/1.html']

rules = (
Rule(LinkExtractor(allow=r'/page/\d+\.html'), callback='parse_item', follow=False),
)

def parse_item(self, response):
# 解析电影名称和详情页url:
li_list = response.xpath('/html/body/div[1]/div/div/div/div[2]/ul/li')
for li in li_list:
name = li.xpath('./div/a/@title').extract_first()
detail_url = 'https://www.4567kan.com/' + li.xpath('./div/a/@href').extract_first()
item = Zjspro1Item()
item['name'] = name
# 可以将爬过的电影的详情页的url记录起来
# ex == 0:数据插入失败 ex==1:数据插入成功
ex = self.conn.sadd("movie_detail_urls", detail_url)
if ex == 1:
print('捕获到最新更新出来的数据!')
yield scrapy.Request(detail_url, callback=self.parse_detail, meta={'item': item})
else:
print('暂无数据的更新!!!')

def parse_detail(self, response):
# 解析描述
desc = response.xpath('/html/body/div[1]/div/div/div/div[2]/p[5]/span[3]/text()').extract_first()
item = response.meta['item']
item['desc'] = desc
yield item



标签:url,detail,li,item,阳光,增量,热线,div,scrapy
From: https://blog.51cto.com/u_15920572/5965369

相关文章

  • MySQL增量同步工具OTTER
    背景:    鉴于****项目中有使用Otter同步数据,同时重庆资源池ESOP也有同样的需求,之前采用的是Federated引擎来实现,但是爱可生RDS不支持该引擎,必须采用其他的工具来实现......
  • 技术分享 | MySQL中一个聚类增量统计 SQL 的需求
    作者:刘晨网名bisal,具有十年以上的应用运维工作经验,目前主要从事数据库应用研发能力提升和技术管理相关的工作,OracleACE,腾讯云TVP,拥有OracleOCM&OCP、EXINDevOpsM......
  • Ajax简述 —— 快速增量式响应
    AjaxAjax的简介及用法Ajax是指异步JS和XML,使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。......
  • Linux备份策略(完全备份、增量备份和差异备份)
    Linux备份策略(完全备份、增量备份和差异备份)详解< 上一节下一节 >常用的备份策略有完全备份和增量备份,而增量备份有可细分为累计增量备份和差异增量备份。下面来分别......
  • ROMA集成关键技术:增量数据集成
    摘要:本文将详解ROMA集成关键技术-增量数据集成技术。本文分享自华为云社区《ROMA集成关键技术(2)-增量数据集成技术》,作者:华为云PaaS服务小智。1.概述ROMA平台的核心系......
  • TIE: A Framework for Embedding-based Incremental Temporal Knowledge Graph Comple
    论文网址:https://dl.acm.org/doi/10.1145/3404835.3462961论文提出一种用增量学习思想做时序知识图谱补全(TemporalKnowledgeGraphCompletion,TKGC)的学习框架......
  • java爬虫笔记:使用WebCollector增量采集www.baiduyunsousou.com
    WebCollector可以配置短点爬取,历史数据根据Key去重,也就是url 最近在采集百度云网盘,记录一下 /***@authorLiu*@create2022-08-0211:48*/@Component@Slf......
  • 通过Logstash实现mysql数据定时增量同步到ES
    文章目录​​前言​​​​一、系统配置​​​​二、同步步骤整体概览​​​​三.logstash数据同步实战​​​​1、新建mysql表​​​​2、ES中新建索引​​​​3、Logstash......
  • Mysqlbackup 增量备份恢复示例
    适用范围5.7+方案概述在生产环境中,我们都会对数据库进行备份,我们知道ORACLE的RMAN备份很灵活,有全备,增量,归档等等备份方式!针对MYSQL来讲,也有一款自己的备份工具mysql......
  • Kettle增量插入和更新
    将数据源A库中的某张表的数据插入更新到数据库B中。​为方便演示,我们在数据库A和数据库B中分别创建表userA和表userB。最终目标为将数据表userA中的数据插入更新到数据表use......