社会经济数据爬虫

声明:代码仅作学习交流用途,代码分享者与创作者不承担任何由他人恶意运行而导致的责任,勿擅自修改限制频率的参数,勿恶意攻击网页,请学习浏览者遵守社会公德与法律秩序,爬虫导致的网页崩溃等损失由计算机操作者负全部责任,造成严重后果的需要承担刑事责任
爬虫代写:邮箱 leon_leon@yeah.net

from selenium import webdriver
from time import sleep
from lxml import etree
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import pandas as pd
from random import randint
import re
first_keys = pd.read_excel('first_keys.xlsx')
second_keys = pd.read_excel('second_keys.xlsx')
edge = webdriver.Edge()
edge.get("https://data.cnki.net/ValueSearch/Index?datatype=year&ky=GDP")
for first_key in first_keys:
    for second_key in second_keys:
        print(first_key,second_key)
        edge.find_element(By.XPATH,'/html/body/div[1]/div[3]/div[1]/form/div/div[1]/input').clear()
        edge.find_element(By.XPATH,'/html/body/div[1]/div[3]/div[1]/form/div/div[1]/input').send_keys("{}".format(first_key))
        edge.find_element(By.XPATH,'/html/body/div[1]/div[3]/div[1]/form/div/div[2]/input').send_keys("{}".format(second_key))
        sleep(3)
        edge.find_element(By.XPATH, '//*[@id="AdvancedSearch"]').click()
        sleep(3)
        df = pd.DataFrame([], columns=['序号','时间','地区','指标','数值','单位'])

        html = edge.page_source
        e = etree.HTML(html)
        xuhao = e.xpath('//*[@id="t1"]/tbody/tr/td[2]/text()')
        shijian = e.xpath('//*[@id="t1"]/tbody/tr/td[3]/text()')
        diqu = e.xpath('//*[@id="t1"]/tbody/tr/td[4]/text()')
        zhibiao = e.xpath('//*[@id="t1"]/tbody/tr/td[5]/text()')
        shuzhi = e.xpath('//*[@id="t1"]/tbody/tr/td[6]/text()')
        danwei = e.xpath('//*[@id="t1"]/tbody/tr/td[7]/text()')
        #laiyuan = e.xpath('//*[@id="t1"]/tbody/tr/td[8]/text()')
        #yema = e.xpath('//*[@id="t1"]/tbody/tr/td[9]/text()')
        #xiazai = e.xpath('//*[@id="t1"]/tbody/tr/td[10]/text()')
        print(xuhao)
        print(shijian)
        print(diqu)
        print(zhibiao)
        print(shuzhi)
        print(danwei)
        datadict = {'序号':xuhao,'时间':shijian,'地区':diqu,'指标':zhibiao,'数值':shuzhi,'单位':danwei}
        df_a = pd.DataFrame(datadict)
        df = df.append(df_a)

        while True:
        #时间验证
            shijian_test = e.xpath('//*[@id="t1"]/tbody/tr[last()]/td[3]/text()')#最后一个
            print(shijian_test)
            shijian_test = re.match('[0-9]+',shijian_test[0]).group() #re提取数字
            time = int(shijian_test)
            if time < 2009:
                break
            else:
                edge.find_element(By.XPATH, '//*[@id="NextPage"]').click()
                sleep(6)
                for handle in edge.window_handles:#方法二,始终获得当前最后的窗口
                    edge.switch_to.window(handle)
                html = edge.page_source
                e = etree.HTML(html)
                xuhao = e.xpath('//*[@id="t1"]/tbody/tr/td[2]/text()')
                shijian = e.xpath('//*[@id="t1"]/tbody/tr/td[3]/text()')
                diqu = e.xpath('//*[@id="t1"]/tbody/tr/td[4]/text()')
                zhibiao = e.xpath('//*[@id="t1"]/tbody/tr/td[5]/text()')
                shuzhi = e.xpath('//*[@id="t1"]/tbody/tr/td[6]/text()')
                danwei = e.xpath('//*[@id="t1"]/tbody/tr/td[7]/text()')
             #   laiyuan = e.xpath('//*[@id="t1"]/tbody/tr/td[8]')
          #      yema = e.xpath('//*[@id="t1"]/tbody/tr/td[9]')
          #      xiazai = e.xpath('//*[@id="t1"]/tbody/tr/td[10]')
                datadict = {'序号':xuhao,'时间':shijian,'地区':diqu,'指标':zhibiao,'数值':shuzhi,'单位':danwei}
                df_a = pd.DataFrame(datadict)
                df = df.append(df_a)
        df.to_excel('地区{}指标{1}知网爬虫数据.xlsx'.format(second_key,first_key))
print('爬虫100%')
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20']
['2020年', '2020年', '2020年', '2020年', '2020年', '2019年', '2019年', '2019年', '2019年', '2019年', '2019年', '2018年', '2018年', '2018年', '2018年', '2018年', '2018年', '2018年', '2018年', '2018年']
['南京市', '南京市', '南京市', '南京市', '南京市', '南京市', '南京市', '南京市', '南京市', '南京市', '南京市', '南京', '南京', '南京', '南京', '南京', '南京', '南京', '南京', '南京']
['规模以上工业企业化学农药原药(折有效成分100%)产量', '规模以上工业企业化学农药原药(折有效成分100%)产量同比增长', '农业机械化、农业化学化、农田水利化情况,农用农药使用量', '农村经济概况,农用农药使用量', '农村经济概况,农用农药使用量,江北新区直管区', '规模以上工业企业化学农药原药(折有效成分100%)产量', '规模以上工业企业化学农药原药(折有效成分100%)产量', '规模以上工业企业化学农药原药(折有效成分100%)产量同比增长', '农业机械化、农业化学化、农田水利化情况,农用农药使用量', '农村经济概况,农药使用量,全市', '农村经济概况,农药使用量,全市 江北新区直管区', '全国港口化学肥料及农药吞吐量', '全国港口化学肥料及农药吞吐量,外贸', '全国港口化学肥料及农药吞吐量,出港', '全国港口化学肥料及农药吞吐量,出港(外贸)', '全国港口化学肥料及农药吞吐量,进港', '全国港口化学肥料及农药吞吐量,进港(外贸)', '规模以上内河港口化学肥料及农药吞吐量', '规模以上内河港口化学肥料及农药外贸吞吐量', '规模以上内河港口化学肥料及农药出港量']
['40481', '-19.6', '1165', '1165', '18', '50368', '50368', '-79.2', '1219', '1219', '19', '3941', '2051', '2042', '1711', '1899', '340', '5216', '2832', '2780']
['吨', '%', '吨', '吨', '吨', '吨', '吨', '%', '吨', '吨', '吨', '千吨', '千吨', '千吨', '千吨', '千吨', '千吨', '千吨', '千吨', '千吨']
['2018年']
['2017年']
['2016年']
['2014年']
['2013年']
['2013年']
['2011年']
['2010年']
['2009年']
['2007年']
爬虫100%
---------------------------------------------------------------------------

webdriver配置

浏览器驱动链接,对应版本

	https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

文件更名为:

	MicrosoftWebDriver.exe
posted @ 2022-04-16 17:39  kuanleung  阅读(12)  评论(0)    收藏  举报  来源