scrapy爬虫过程中无法提取script标签中动态数据问题的解决

本文讲述了在使用Scrapy爬虫时遇到动态加载数据无法提取的问题,特别是针对JavaScript生成的数据。作者尝试了BeautifulSoup、Selenium+webdriver等方法,最后通过使用response.text结合正则表达式成功提取到了script标签中的数据。完整代码展示了解决过程,对遇到类似问题的开发者具有参考价值。

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

最近小组作业是写一个空气网站的爬虫和模型分析,我主要负责爬虫的部分。
分析网站是这个:绿色呼吸空气监测网
爬取全部城市、url和单个城市当天总体和各个监测点数据都进行得很顺利,但卡在了提取24h和30天内pm2.5的变化部分。

选一个具体城市进行分析:北京城市空气实时监测网
在实时监测的图标上右键查看源代码,发现这是个动态加载模块(点其他点儿它是会变的。。)
在这里插入图片描述
于是搜了一下这个简单直白的“美国标准”,发现了这个:
在这里插入图片描述定位到具体源代码,发现在最后一个script里:
在这里插入图片描述
源代码如下:

<script>
seajs.use(['common', 'tabs', 'echarts'], function(common, Tabs){
   

$(document).ready(function(){
   
    common.listHover();
        new Tabs({
   
        element: '.pj_area',
        triggers: '.pj_area_tab a',
        triggerType: 'click',
        activeTriggerClass: 'current',
        panels: '.pj_area_data_details',
        activeIndex: 0
    });

    new Tabs({
   
        element: '.panel_graph',
        triggers: '.pg_area_tab a',
        triggerType: 'click',
        activeTriggerClass: 'current',
        panels: '.pg_content',
        activeIndex: 0
    });

    // 基于准备好的dom,初始化echarts图表
    var myChart = echarts.init(document.getElementById('pg_content_24h'), 'shine'); 
    
    var option = {
   
        color: ['#79b05f', '#e58c65'],
        tooltip : {
   
            trigger: 'axis'
        },
        legend: {
   
            data:['美国标准','中国标准']
        },
        xAxis : [
            {
   
                type : 'category',
                boundaryGap : false,
                data : ["27\u65e519\u65f6","27\u65e520\u65f6","27\u65e521\u65f6","27\u65e522\u65f6","27\u65e523\u65f6","28\u65e500\u65f6","28\u65e501\u65f6","28\u65e502\u65f6","28\u65e503\u65f6","28\u65e504\u65f6","28\u65e505\u65f6","28\u65e506\u65f6","28\u65e507\u65f6","28\u65e508\u65f6","28\u65e509\u65f6","28\u65e510\u65f6","28\u65e511\u65f6","28\u65e512\u65f6","28\u65e513\u65f6","28\u65e514\u65f6","28\u65e515\u65f6","28\u65e516\u65f6","28\u65e517\u65f6","28\u65e518\u65f6"],
                axisLine: {
   
                    lineStyle : {
   
                      color: '#d4d4d4'
                    }
                }
            }
        ],
        yAxis : [
            {
   
                type : 'value',
                axisLabel : {
   
                    formatter: '{value} '
                },
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值