方兔叽 2020-03-25 14:18 采纳率: 0%
浏览 540
已采纳

scrapy框架+formdata+ajax爬取及翻页问题

问题描述:使用scrapy框架爬取ajax网页,以中国地震台网——历史查询为例,我想爬取某个时间段内所有的数据,但是我的代码并不能实现,找了一些相关问题参考,最终代码如下,未能实现,请问大哥大佬们能支个招吗。。。(scrapy框架,已测试过代码其他配置等没有问题)

#spider文件:

# -*- coding: utf-8 -*-
import scrapy
from EarthquakeScrapy.items import EarthquakescrapyItem


class TestScrapy(scrapy.Spider):
    name = 'test'  # 爬虫的名字
    allowed_domains = ['ceic.ac.cn/search']  
    start_urls = 'http://www.ceic.ac.cn/ajax/search?page=&&start=&&end=&&jingdu1=&&jingdu2=&&weidu1=&&weidu2=&&height1=&&height2=&&zhenji1=&&zhenji2='
    # 爬取页码循环次数,一共57页
    all_page = 3

    def start_requests(self):
        # 遍历各页
        for i in range(1, self.all_page + 1):  # 从前端获取的页面[1,57+1),循环1到57页
            yield scrapy.FormRequest(self.start_urls,
                                     formdata={'page': 'i', 'start': '2019-03-25','end': '2020-03-25',
                                               'jingdu1': '', 'jingdu2': '','weidu1': '', 'weidu2': '',
                                               'height1': '','height2': '', 'zhenji1': '', 'zhenji2': '','callback': ''},
                                     callback=self.parse,
                                     dont_filter=True)  # 请求对应的内容

    def parse(self, response):
        result = eval(response.body.decode('utf-8'))
        records = result['shuju']
        item = EarthquakescrapyItem()
        print("**")#测试用
        for record in records:
            item['level'] = record['M']
            item['time'] = record['O_TIME']
            item['longitude'] = record['EPI_LON']
            item['latitude'] = record['EPI_LAT']
            item['depth'] = record['EPI_DEPTH']
            item['address'] = record['LOCATION_C']
            print(record['M'])#测试爬取数据情况
            # yield item

  • 写回答

1条回答 默认 最新

  • 放风喽 2020-03-25 20:01
    关注

    def parse(self, response):
    result = eval(response.body.decode('utf-8'))

    兄弟,你打印一下result看看是什么东西

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题