scrapy与selenium结合爬取网易新闻

【Python】爬取网易新闻今日热点列表数据并导出 免责声明:文章仅供学习使用! 阅读详情
# -*- coding: utf-8 -*-
import scrapy
from selenium import webdriver
from wangyiPeo.items import WangyipeoItem
class WangyiSpider(scrapy.Spider):
    name = 'wangyi'
    # allowed_domains = ['www.xxx.com']
    start_urls = ['https://news.163.com']
    model_urls = []
    bro = webdriver.Chrome(executable_path=r'chromedriver.exe')

    def parse(self, response):
        #解析出5个板块对应的url
        li_list = response.xpath('//*[@id="index2016_wrap"]/div[1]/div[2]/div[2]/div[2]/div[2]/div/ul/li')
        model_index = [3,4,6,7,8]
        for index in model_index:
            #li依次表示的是5个板块对应的li标签
            li = li_list[index]
            #5个板块对应的url
            model_url = li.xpath('./a/@href').extract_first()
            self.model_urls.append(model_url)
            #对每一个板块的url进行手动请求的发送
            yield scrapy.Request(model_url,callback=self.parse_model)
    def parse_model(self,response):#用作于解析每一个板块对应页面数据中的新闻标题和新闻详情页的url
        #该方法中获取的response对象是没有包含动态加载出的新闻数据(是一个不满足需求的response)
        div_list = response.xpath('/html/body/div/div[3]/div[4]/div[1]/div/div/ul/li/div/div')#1+5+n
        for div in div_list:
            title = div.xpath('./div/div[1]/h3/a/text()').extract_first()
            detail_url = div.xpath('./a/@href').extract_first()
            item = WangyipeoItem()
            item['title'] = title
            yield scrapy.Request(detail_url,callback=self.parse_new_detail,meta={'item':item})
    def parse_new_detail(self,response):#解析新闻内容
        item = response.meta['item']
        content = response.xpath('//*[@id="endText"]//text()').extract()
        content = ''.join(content)
        item['content'] = content

        yield item
    #改方法只会在整个程序结束时执行一次
    def closed(self,spider):
        self.bro.quit()

 

下载中间件:

 

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

# Define here the models for your spider middleware
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/spider-middleware.html

from scrapy import signals
from scrapy.http import HtmlResponse
from time import sleep


class WangyipeoDownloaderMiddleware(object):

    #参数:
    #reuqest:拦截到请求对应的响应对象
    #response:拦截到所有的响应对象(1+5+n)
    #spider:爬虫类实例化的对象,可以实现爬虫类和中间件类的数据交互
    def process_response(self, request, response, spider):
        #拦截到5个板块对应的响应对象,将其替换成5个符合需求的新的响应对象进行返回
        #1.找出5个板块对应的5个不符合需求的响应对象
        if request.url in spider.model_urls:
            #就是满足需求的五个板块对应的响应对象
            #url:响应对象对应的请求对象的url
            #body:响应数据,可以由selenium中的page_source返回
            bro = spider.bro
            bro.get(request.url)
            sleep(3)
            page_text = bro.page_source #包含了动态加载的新闻数据
            new_response = HtmlResponse(url=request.url,body=page_text,encoding='utf-8',request=request)
            return new_response
        else:
            return response

 

scrapy的中间件实现与selenium结合(网易新闻) 在我们使用scrapy爬取网易新闻时,会出现ajax形式数据,使用的是selenium+scrapy的下载中间件,这里我们实现scrapy异步抓取。 中间件分类: - 下载中间件: DownloadMiddleware - 爬虫中间件: SpiderMiddleware 中间件的作用: - 下载中间件: 拦截请求与响应, 篡改请求与响应 - 爬虫中间件: 拦截请求与响应, 拦截管道item, 篡... 阅读详情

相关推荐

python爬虫之用scrapy下载中间件爬取网易新闻

python爬虫之用scrapy下载中间件爬取网易新闻

qq_55829395的博客 1401

爬取网易新闻

wangyi.py import scrapy from selenium import webdriver from wangyiPro.items import WangyiproItem ''' 可以尝试用这个项目做boss直聘的项目 python期末作业 空气质量分析也可以参考 ''' class WangyiSpider(scrapy.Spider): name = 'wangyi' # allowed_domains = ['www.wngyi.com'].

小鱼干儿的博客 980

一个简单的网易新闻爬虫

抓取了网易新闻里["国内","国际","航空"]和["军事","科技","体育","教育"]板块的新闻内容和评论并存到数据库中。

Python3 + MySQL实现网易新闻的多进程抓取(附源代码)

网址:https://3g.163.com/touch/news/?ver=c&clickfrom=index2018_header(手机网易新闻网) 所需模块如下: 标准库: time; json 第三方库: requests; lxml; multiprocessing; pymysql 为了提高代码复用性,用户希望爬取的新闻页数在程序执行时均由用户输入 ...

@黑猫省长 的博客 1423

抓起网易新闻(可支持大量抓去)

使用maven,利用crawler4进行爬虫,抓取大量的网易,并没有解析(我会用python进行解析)说明忘了放在文件里啦,有问题请留言

爬虫网易新闻

源代码包括爬虫 网易新闻 评论 数据分析,还有个人信息模块。是一个完整的网络数据爬取分析的web端的项目。

如何利用python爬取网易新闻

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者: LSGOGroup PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef 学习了python基本语法后,对爬虫产...

人生苦短, 还不用Python? 4933

卸载重装Ubuntu22.04双系统

先说一下写此篇文章的背景吧,我在Windows下配置了三个cornerNet深度学习环境分别是cuda10.3(显卡版本太高不支持),cuda11.3(配置后偶然看到一篇说这个版本win下只能用CPU跑),最后是cuda11.1终究还是没能跑通代码,因为它的代码是在Liunx系统写的,就想着装个Ubuntu试试看,在网上看说一般软件不要装太高版本,我就下载了470版的显卡驱动,跟着步骤升级了系统内核,结果第二天开机Ubuntu就崩了,开机黑屏左上角只有一道横杠显示,只能按ctrl+shift+f5进入命令窗

编程小白的博客 8102

深度剖析Selenium与Scrapy的黄金组合:实现动态网页爬虫

在实际应用中,首先确保Scrapy和Selenium已正确安装,并配置好ChromeDriver等必要工具。接着,创建Scrapy项目,添加Selenium中间件,进而实现动态网页的爬取。

aobulaien001的博客 4892

C++ 核电站

问题描述 一个核电站有n个放核物质的坑,排列在一条直线上。如果连续m个坑中放入核物质就会发生爆炸,所以某些坑中不能放核物质。 本题的任务:对于给定的n和m,求不发生爆炸的放置核物质的方案总数。 输入格式 第一行两个正整数n和m,之间用一个空格隔开。2≤n≤50,2≤m≤5。 输出格式 一行一个正整数,表示方案总数。 输入样例 4 3 输出样例 13 数据规模与约定 2≤n≤50,2≤m≤5 CODE #include<bits/stdc++.h> using namespace

HybridCOW_HORSE的博客 1802

用Python+Charles搞定小程序付费短剧下载(附完整代码与避坑点)

本文详细介绍了如何利用Python和Charles抓包工具实现小程序付费短剧的自动化下载。通过分析小程序视频接口、破解请求参数,并编写Python脚本,读者可以轻松获取并保存短剧内容。文章还提供了完整的代码示例和常见问题的解决方案,特别适合对视频采集和抓包技术感兴趣的开发者。

weixin_28731231的博客 1187

推荐使用:使用scrapy和selenium结合爬取网易新闻内容

推荐使用:使用scrapy和selenium结合爬取网易新闻内容 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 利用scrapy与selenium结合,高效爬取网易新闻动态内容。 项目介绍 在信息爆炸的时代,快速准确地获取新闻内容至关重要。今天,我将为您介绍一个开源项目——使用scrapy和selenium结合爬取网易新闻内容。该项目详细展示了如何使用这两个...

gitblog_06794的博客 923

手把手教你用STM32+LAN8720搭建以太网通信模块(含原理图)

本文详细介绍了如何使用STM32微控制器与LAN8720物理层芯片搭建以太网通信模块,涵盖硬件设计、软件配置及常见问题排查。重点讲解了LAN8720的低功耗设计、RMII接口简化布线等特性,以及STM32CubeMX配置和LwIP协议栈移植技巧,助力开发者快速实现稳定可靠的嵌入式网络通信。

CAT789的专栏 411

使用scrapy和selenium结合爬取网易新闻内容

使用scrapy和selenium结合爬取网易新闻内容 去发现同类优质开源项目:https://gitcode.com/ 此资源文件详细介绍了如何使用scrapy和selenium结合来爬取网易新闻内容。文件中包含了完整的代码以及必要的解释,旨在帮助用户更好地理解和掌握网络爬虫的相关技术。 简介 在当前的信息化时代,获取大量数据变得越来越重要。网络爬虫作为一种自动获取网页内容的技术,被广泛应用于各...

gitblog_06719的博客 491

MIPI D-PHY TX 一致性测试实例解析 Part 01

汽车电子领域,尤其是ADAS,伴随着摄像头的大规模布局,MIPI信号的使用日益频繁,关于它的验证与分析工作也变得日益关键

一只豌豆象的博客 1万+

MuJoCo 入门教程(一)

在 MuJoCo 仿真中输入自定义数字有三种方法。首先,可在 XML 中定义全局数字字段。它们有一个名称和一个实数值数组。其次,可以通过特定元素的自定义数组来扩展某些模型元素的定义。具体方法是在 XML 元素大小中设置 nuser_XXX 属性。第三,数组 mjData.userdata 不用于任何 MuJoCo 计算。用户可以在这里存储自定义计算的结果;请记住,所有随时间变化的内容都应存储在 mjData 中,而不是 mjModel 中。自定义文本字段可以保存在模型中。

机器人控制与仿真应用 1万+

Scrapy框架:爬取网易新闻四大板块数据

简介:本文主要记录了学习Scrapy框架的成果,以及Selenium模拟浏览器和SQLite数据库的简单应用。 文章目录前言一、Scrapy是什么?二、拓展知识(Selenium、SQLite)三、具体步骤1.spider.py文件2.items.py文件3.middlewares.py文件4.pipelines.py文件5.settings.py文件6.run_spider.py文件四、结果展示总结 前言 需求:利用Scrapy框架爬取<网易新闻>四大常用板块(国内、国际、军事、无人机)首

weixin_43037350的博客 1410

Linux驱动学习--HCI框架及源码分析

目录 一、引言 二、HCI框架 三、pcm_read简要分析 一、引言 最近一直在分析蓝牙驱动,发现在底层驱动与上层协议栈间还有一层HCI,主机控制层,两者之间通过HCI协议通讯 而Linux也将HCI协议抽象层了一个框架。 为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如像 UART、USB和PC Card等等。hci_core.c相当于一个框架,用于把各种具体通信方式绞合起来,并提供一些公共函数的实现。 今天就来简单的分析一下 二

文艺小少年的博客 2002

Scrapy-网易新闻模块爬取

需求 首先明确需求:爬取网易新闻新闻的标题和新闻详情页的内容 注意项: 先从首页获取对应的详情页的url 每一个模块的新闻都是动态加载出来的,可配合selenium实现动态加载 详情页面的爬取 实现过程 创建工程:scrapy startproject wangyiPro 转入工程:cd wangyiPro 创建爬虫文件:scrapy genspider wangyi www.xxx.com 实现过程 1.1 观察首页结构,定位模块 观察网易新闻的首页,配套开发者工具,定位到需要爬取的模块,编写pars

qq_45786520的博客 935

详解FreeRTOS:低功耗Tickless模式(高级篇—7)

FreeRTOS提供了一个叫做Tickless的低功耗模式,本篇博文我们就来学习一下如何使用这个Tickless模式。

不脱发的程序猿 1896

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python网络爬虫——Scrapy中selenium的使用

引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值。但是通过观察我们会发现,通过浏览器进行url请求发送则会加载出对应的动态加载出的数据。那么如果我们想要在scrapy也获取动态加载出的数据,则必须使用selenium创建浏览器对象,然后通过该浏览器对象进行...

223

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

selenium在scrapy中的使用(网易新闻)

selenium结合scrapy实现深度爬取动态数据

qq_43658523的博客 1140

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

小爬爬6: 网易新闻scrapy+selenium的爬取

1.https://news.163.com/ 国内国际,军事航空,无人机都是动态加载的,先不管其他我们最后再搞中间件 2. 我们可以查看到"国内"等板块的位置 新建一个项目,创建一个爬虫文件 下面,我们进行处理: 仔细查找二级标签的位置: 每一段的信息都储存在p标签内部 items.py写两个字段 导...

weixin_30306905的博客 247

项目案例(爬取网易新闻)

编辑本随笔 bobo博客 案例需求 爬取网易新闻基于文字的新闻,板块包括国内、国际、军事、航空等四个板块 获取指定板块超链接 import scrapy class WangyiSpider(scrapy.Spider): name = 'wangyi' #allowed_domains = ['news.163.com'] start_urls = ...

weixin_30755709的博客 943

scrapy中selenium的应用

引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值。但是通过观察我们会发现,通过浏览器进行url请求发送则会加载出对应的动态加载出的数据。那么如果我们想要在scrapy也获取动态加载出的数据,则必须使用selenium创建浏览器对象,然后通过该浏览器对象进行请求发...

weixin_30924239的博客 146
上一篇: scrapy的爬虫中间件和下载中间件
下一篇: scrapy中专门用于二进制和bytes类型的数据下载的管道(下载图片)
SpringBears
博客等级 码龄9年 2粉丝 73原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值