biubiu~你有一份中国人口数据需要查收

爬取世界人口网上的中国各省的2019年人数和2018年GDP

(数据并非完全真实有效)

import requests
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
from selenium.webdriver.common.action_chains import ActionChains

def get_page(url):
    driver = webdriver.Chrome()
    driver.get(url)
    xpath = '//*[@id="menu-item-9802"]/a'
    ActionChains(driver).click(driver.find_element_by_xpath(xpath)).perform()
    time.sleep(1)
    xpath1 = '//*[@id="copy"]/div[1]'
    table1 = driver.find_element_by_xpath(xpath1).get_attribute('innerHTML')
    soup = BeautifulSoup(table1,'html.parser')
    tb = soup.find_all('tr')
    return tb

def find_message(tb):
    for row in tb:
        cols = [col.text for col in row.find_all('td')]
        if cols[0] == '排名':
            continue
        index.append(cols[0])
        adress.append(cols[1])
        number_2019.append(cols[2])
        GDP_18.append(cols[3])

def save_message():
    data = {'排名':index,'地区':adress,'2019年人口':number_2019,'2018年GDP':GDP_18}
    dataframe = pd.DataFrame(data)
    dataframe.to_csv('Pnumber.csv',index=False,sep=',',encoding='utf-8-sig')

def main():
    tb = get_page(url)
    find_message(tb)
    save_message()

url = 'http://www.chamiji.com'
index = []
adress = []
number_2019 = []
GDP_18 = []
main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很高兴为您提供帮助。生成一个软件双向双指针缓冲区的程序需要实现以下步骤: 1. 创建一个双向链表结构体,并定义结构体的数据成员,包括指向前一节点和后一节点的指针、缓冲区数据以及缓冲区长度等信息; 2. 封装双向链表的创建、插入、删除、查找等操作函数,以方便程序的调用; 3. 在主函数中,调用双向链表操作函数,实现缓冲区的读写、更新等操作,满足双向双指针缓冲区的需求。 以下是一个示例代码,仅供参考: ```c #include <stdio.h> #include <stdlib.h> //定义双向链表结构体 struct ListNode { char *data; // 数据指针 int length; // 数据长度 struct ListNode *prev; // 指向前一个节点的指针 struct ListNode *next; // 指向后一个节点的指针 }; //创建一个新节点 struct ListNode* create_node(char *d, int len) { struct ListNode *node = (struct ListNode*) malloc(sizeof(struct ListNode)); node->data = d; node->length = len; node->prev = NULL; node->next = NULL; return node; } //插入节点到链表头部 void insert_node_to_head(struct ListNode **head, struct ListNode *new_node) { if (*head == NULL) { *head = new_node; return; } new_node->prev = NULL; new_node->next = *head; (*head)->prev = new_node; *head = new_node; } //删除指定节点 void delete_node(struct ListNode **head, struct ListNode *node) { if (node == NULL || *head == NULL) return; if (node == *head) { *head = node->next; if (*head) (*head)->prev = NULL; } else { node->prev->next = node->next; if (node->next) node->next->prev = node->prev; } free(node->data); free(node); node = NULL; } //查找第一个 data 不等于 NULL 的节点 struct ListNode* find_first_valid_node(struct ListNode *head) { if (head == NULL) return NULL; while (head->data == NULL) { struct ListNode *tmp = head; head = head->next; free(tmp->data); free(tmp); tmp = NULL; if (head) head->prev = NULL; } return head; } //程序主逻辑,实现缓冲区的读写、更新等操作 void main_logic() { struct ListNode *head = NULL; //插入节点 char d1[5] = "abcd"; struct ListNode *node1 = create_node(d1, 4); insert_node_to_head(&head, node1); char d2[5] = "efgh"; struct ListNode *node2 = create_node(d2, 4); insert_node_to_head(&head, node2); char d3[5] = "ijkl"; struct ListNode *node3 = create_node(d3, 4); insert_node_to_head(&head, node3); //读取并输出缓冲区内容 struct ListNode *node = head; while (node) { printf("%s ", node->data); node = node->next; } printf("\n"); //更新缓冲区数据 struct ListNode *last = head; while (last->next) { last = last->next; } char d4[5] = "mnop"; struct ListNode *node4 = create_node(d4, 4); last->next = node4; node4->prev = last; //查找并删除第一个 data 不等于 NULL 的节点 struct ListNode *valid_node = find_first_valid_node(head); if (valid_node) delete_node(&head, valid_node); //读取并输出更新后的缓冲区内容 node = head; while (node) { printf("%s ", node->data); node = node->next; } } int main() { main_logic(); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UPC. 故里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值