数据资源整理【二】:爬虫获取329万多条姓名数据并保存为sqlite3、Excel、csv文件【文末下载链接】

本文主要是介绍数据资源整理【二】:爬虫获取329万多条姓名数据并保存为sqlite3、Excel、csv文件【文末下载链接】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 数据说明
  • 数据来源
  • 源码讲解
  • 下载地址

数据说明

在这里插入图片描述

数据来源

公开网站《姓名大全》获取,数据和源码仅供学习交流使用

源码讲解

主要分为三部分:

  • get_name_link获取所有百家姓地址
  • get_data获取百家姓地址中的所有姓名
  • create_db创建数据库,保存数据
import time
import random
import requests
import sqlite3
from bs4 import BeautifulSoupdef get_name_link():# 解析百家姓列表,获取姓名对应的地址url = "http://www.resgain.net/xmdq.html"res = requests.get(url)soup = BeautifulSoup(res.text, 'lxml')name_links = []for s in soup.find_all(attrs={'class': 'btn btn2'}):name_link_dict = {"name": s.text,"link": "https://www.resgain.net/" + s.get('href')}name_links.append(name_link_dict)return name_linksdef get_data(first_name, url):# 连接数据库con = sqlite3.connect(r'tools_app.db')cursor = con.cursor()# 获取数据,并解析数据res = requests.get(url)soup = BeautifulSoup(res.text, 'lxml')if "gender=1" in url:sex_ = "男"else:sex_ = "女"for s in soup.find_all(attrs={'class': 'cname'}):name = s.text# print(s.text)sql = "insert into names (first_name,name,sex) values('{0}','{1}','{2}');".format(first_name, name, sex_)cursor.execute(sql)con.commit()print(url, "完成")con.close()def create_db():# 创建 sqlite3 数据库conn = sqlite3.connect(r"tools_app.db")cursor = conn.cursor()cursor.execute('''CREATE TABLE if not exists names(id INTEGER PRIMARY KEY  AUTOINCREMENT,first_name           TEXT    NOT NULL,name           TEXT    NOT NULL,sex         TEXT    NOT NULL);''')print("names database created successfully")conn.commit()conn.close()if __name__ == '__main__':# 创建数据库和RANDOM_NAME表create_db()# 获取百家姓连接地址name_link_list = get_name_link()# print(name_link_list)for name_link in name_link_list[70:]:# 拼接男生和女生的地址link = name_link.get("link")first_name = name_link.get("name")url_boys = link + "&gender=1&wx1=&wx2="url_girls = link + "&gender=0&wx1=&wx2="# 获取数据,并保存到 tools_app.db 中get_data(first_name, url_boys)# 每次获取完成后,随机暂停几秒t = random.randint(1, 3)time.sleep(t)get_data(first_name, url_girls)t = random.randint(1, 3)time.sleep(t)print(first_name,"完成!")# break

下载地址

链接:https://pan.baidu.com/s/17ddiWLEZdz8XFa5XsWQz1w?pwd=o8i5

这篇关于数据资源整理【二】:爬虫获取329万多条姓名数据并保存为sqlite3、Excel、csv文件【文末下载链接】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/306404

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输

java poi实现Excel多级表头导出方式(多级表头,复杂表头)

《javapoi实现Excel多级表头导出方式(多级表头,复杂表头)》文章介绍了使用javapoi库实现Excel多级表头导出的方法,通过主代码、合并单元格、设置表头单元格宽度、填充数据、web下载... 目录Java poi实现Excel多级表头导出(多级表头,复杂表头)上代码1.主代码2.合并单元格3.

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines