初学者——Selenium爬取统计局年度人口分布公开数据代码

初学者——Selenium爬取统计局年度人口分布公开数据代码

(仅爬虫练习,侵删)

数据来源:统计局官网
数据去向:EXCEL表格
数据处理工具:SELENIUM ,GOOGLE浏览器
注意事项:

1.代码中的浏览器驱动地址以及存储CSV地址需要更换本地地址;
2.存储数据:一张表 = 一个工作薄,目录层级关系在工作薄名字上进行展示;

话不多说,直接上代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
from lxml import etree
from lxml import html
from bs4 import BeautifulSoup
import selenium.webdriver.support.ui as ui
import requests
import pandas as   pd
import time
import json
import openpyxl as op
import urllib.request
import re
import hashlib
import datetime
#写入指定的EXCEL文件
def  write_to_excel(fileName,sheetname,title,data):
    try:
        workbook = op.load_workbook(fileName)
        worksheet1 = workbook.create_sheet(sheetname)
        worksheet1.append( title)
        for j in range(len(data)):
            insertData = data[j]
            worksheet1.append(insertData)
        workbook.save(fileName)  # 关闭表
    except Exception as e:
        print('list index out of range')
        print(e)
        
# 获取指定路径下的级数个数
def getElementCnt(resp,path,element):
    param1 = resp.xpath(path)
    try:
        param_code = html.tostring(param1[0])
        param_cnt = str(param_code).count(element)
        return param_cnt
    except Exception as e:
#         print("Calculating Element Count Wrong!")
        if e is 'list index out of range':
            return 0
        else:
#             print(e)
            return 0
        
    
#判断下一级个数是否存在
def judgeHasNextFloor(resp,path,element):
    a = getElementCnt(resp,path,element)
    if a is not 0:
        return true
    else:
        return false
#清除数据自身带来的符号
def cleanString(str1):
    return str1.replace('[','').replace(']','').replace('\'''','')
# #获取数据列级信息
def getHeadData(resp):
    headlists = []
    column_cnt = getElementCnt(resp,'/html/body/div[5]/div[2]/div/div[2]/div[2]/div[2]/div/div[1]/table/thead/tr','<th')
    tbhead_list =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值