pyspider爬取统计局统计动态

4 篇文章 0 订阅
2 篇文章 0 订阅
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2018-05-28 10:33:42
# Project: tongjiju

from pyspider.libs.base_handler import *
from lxml import etree

class Handler(BaseHandler):
    crawl_config = {
    }

    @every(minutes=24 * 60)
    def on_start(self):
        self.crawl('http://www.stats.gov.cn/tjgz/tjdt/index.html', callback=self.index_page)

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        s = etree.HTML(response.text)
        a = s.xpath('/html/body/div/div/div[3]/div[2]/ul/li/a/@href')
        # 用输出来验证输出内容是否为正确的链接形式,结果并不是,需要自己构造一下
        # 输出形式为 ./201805/t20180518_1600030.html 前面小数点要处理一下
        print(a) 
        for each in a:
            # 注意不能替换掉所有的小数点,后边的.html也有小数点
            # 只需要检验首字母是否为小数点并进行替换即可
            if each[0] == '.': 
                b = each.replace('.', 'http://www.stats.gov.cn/tjgz/tjdt', 1)
                # 再次输出进行检验链接,检验成功
                print(b)
                self.crawl(b, callback=self.detail_page)
        for i in range(1,6):
            # 构造下一页的链接,爬取页数可以任意修改,这里只是测试
            next_href = 'http://www.stats.gov.cn/tjgz/tjdt/index_' + str(i) +'.html'
            print(next_href)
            self.crawl(next_href, callback=self.index_page)

    @config(priority=2)
    def detail_page(self, response):
        return {
            # 想获取什么内容在这里自己定义即可
            # 用xpath还是css根据自己习惯即可,网站上自带的css不一定正确,要检查一下
            "url": response.url,
            "title": response.doc('title').text(),
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值