文章目录

  • 输入到mysql版
  • 输出到csv文件版本

输入到mysql版

输出会有警告,但是不影响。
附上了详细的解释~

import pandas as pd
import requests
import random
from bs4 import BeautifulSoup
import pymysql
from sqlalchemy import create_enginedef get_one_page(i):# 使用ip代理,随机代理ip# 设置headers 这些都是为了避免访问过于频繁被禁止try:IPs = [{'HTTP': 'HTTP://118.190.95.35:9001'},{'HTTP': 'HTTP://61.135.217.7:80'},{'HTTP': 'HTTP://116.1.11.19:80'}]reportTime = '2017-12-31'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36','Referer': 'http://s.askci.com/stock/a/?reportTime=%s' % reportTime + '&pageNum=178'}url = 'http://s.askci.com/stock/a/?reportTime=%s' % reportTime + '&pageNum=%d' % iresponse = requests.get(url, headers=headers, proxies=random.choice(IPs))if response.status_code == 200:return response.textreturn Noneexcept requests.RequestException:print("爬取出错")def parse_one_page(html):soup = BeautifulSoup(html, 'lxml')# 选择id为myTable04的控件,代码中有解释content = soup.select("#myTable04")[0]# 第一行设置为column,并且选第一个(因为是一个list), 其实也只有一个tbl = pd.read_html(content.prettify(), header=0)[0]# 强制修改列名,中文列名不好写入数据库tbl.columns = ['serial_number', 'stock_code', 'stock_abbre', 'company_name', 'province', 'city','main_business_income','net_profit', 'employee', 'listing_date', 'zhaogushu', 'financial_report','industry_classification', 'industry_type', 'main_business']return tbldef generate_mysql(db, user, password, port):# 创立连接# db就是需要数据库中的schema 选一个schema就好了conn = pymysql.connect(host='localhost',user=user,password=password,port=port,charset='utf8',db=db)cursor = conn.cursor()# 创建数据库sql = 'CREATE DATABASE if not exists %s' % db# 执行命令cursor.execute(sql)# 创建表sql = 'CREATE TABLE if not exists listed_company (serial_number INT(20) NOT NULL, stock_code VARCHAR(20), stock_abbre VARCHAR(20), company_name VARCHAR (20),province VARCHAR (20), city VARCHAR (20), main_business_income VARCHAR(20), net_profit VARCHAR (20), employee INT (20), listing_date DATE, zhaogushu VARCHAR(20), financial_report VARCHAR (20), industry_classification VARCHAR(20), industry_type VARCHAR(100), main_business VARCHAR(200), PRIMARY KEY (serial_number))'# 执行命令cursor.execute(sql)# 断开链接conn.close()def write_to_sql(tbl, db, user, password, port):engine = create_engine('mysql+pymysql://%s:%s@localhost:%d/%s?charset=utf8' % (user, password, port, db))tbl.to_sql('listed_company', con=engine, if_exists='append', index=False)def main(page):# 设置预想databasedb = 'test'user = 'root'password = '1234'port = 3306# 生成数据库generate_mysql(db, user, password, port)# 选page这么多页for i in range(1, page + 1):# 读取网页htmlhtml = get_one_page(i)# 分析得到dataframetbl = parse_one_page(html)# 将dataframe写到sql中write_to_sql(tbl, db, user, password, port)if __name__ == '__main__':reportTime = '2017-12-31'url = 'http://s.askci.com/stock/a/?reportTime=%s' % reportTime + '&pageNum=%d'# 最大设置为178,输入页数就好了main(2)

输出到csv文件版本

放在了下面的这个链接中,是之前写好的,也是有解释~
【修改版】10行代码爬取A股上市公司信息

【附上解释】爬取A股所有上市公司的信息并存储到数据库或者是csv文件中相关推荐

  1. Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中

    Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中 1.需要的Python模块 主要是requests模块,用于得到的网页的数据 安装命令为:pip install requests 2 ...

  2. 10分钟爬取A股所有上市公司超千万条股票数据

    最近,在tushare官方文档中,看到这个一个方法pro.stock_basic(),作用是可以爬取A股所有上市股票基本信息.然后我就试了一下,默认条件下可以爬取到A股上市的的所有股票基本数据,共41 ...

  3. Node 插件 爬取王者荣耀官网英雄信息,并生成数据库

    文章结构 打开官网看接口地址 打开官网 游戏资料里的英雄资料,并打开后台 接下来是英雄技能 技能结构路径方便抓取 jQ的获取元素这里不细说 重头戏 抓包到到数据库 全部代码 看数据库 总结 打开官网看 ...

  4. scrapy爬取上海宝山安居客房产信息并存到mysql数据库中

    源码下载:https://download.csdn.net/download/dabao87/11997988 首先搭建虚拟环境和安装python这里就不说了,不会的请移步我的其他文章 安装虚拟环境 ...

  5. python爬取微博数据存入数据库_Python爬取新浪微博评论数据,写入csv文件中

    因为新浪微博网页版爬虫比较困难,故采取用手机网页端爬取的方式 操作步骤如下: 1. 网页版登陆新浪微博 2.打开m.weibo.cn 3.查找自己感兴趣的话题,获取对应的数据接口链接 4.获取cook ...

  6. AIBigData训练营笔记四:Python爬取A股股票名称和代码

    系统环境: 操作系统:Windows8.1专业版 64bit Python:anaconda.Python2.7 Python modules:requests.random.BeautifulSou ...

  7. python人人贷爬虫_爬取人人贷网上部分借贷信息以及数据可视化

    一.主题式网络爬虫设计方案:爬取人人贷网上部分借贷信息 1.主题式网络爬虫名称:爬取人人贷网上部分信息 2.主题式网络爬虫的内容与数据特征分析:爬取人人贷部分信息数据,借贷信息 3.主题式网络爬虫设计 ...

  8. 【爬虫】用Python爬取去哪儿网热门旅游信息(并打包成旅游信息查询小工具)

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/det ...

  9. python爬取boss直聘招聘信息_年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备...

    原标题:年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备 前言 为什么都说程序员的薪资高,但是刚开始入职的你,薪资并不是自己想象中的那样,首先是你的工作经验不足,其次就是需要不断的 ...

最新文章

  1. 计算机网络连接设备的有什么,常用网络连接设备有哪些?
  2. 批归一化和Dropout不能共存?这篇研究说可以
  3. Android Wifi 启动过程,AndroidP wifi启动流程
  4. c++连接mongodb出错
  5. oracle用dba登陆怎么登,以SQLDBA身份登录isqlplus
  6. C指针原理(42)-内存管理与控制
  7. HDU4539+状态压缩DP
  8. java 嵌套类 map_java – 将groupingBy用于嵌套Map,但收集到不同类型的对象
  9. 【Android源码】Activity如何加载布局
  10. asp.net生成高质量缩略图通用函数
  11. 监护仪系统都是Linux吗,基于Linux和MiniGUI的心电监护仪设计 (1)
  12. 分享前几年的外包经历,给正在犹豫要不要去外包的学弟学妹做参考.
  13. Lunix网络编程之socket(客户端发送请求,服务器处理例如:排序,两人联机五子棋)
  14. 如何写一个批量下载PDF文件的程序hp48
  15. 基于Yolov5目标检测的物体分类识别及定位 -- 全过程总结
  16. (17)python_字典
  17. android 整人代码‘’,史上最全的 整人代码
  18. python天下无敌表情包_这套打遍天下无敌手的“算我输”表情包 从哪儿蹦出来的?...
  19. 抽奖h5小游戏还能这么玩?h5抽奖游戏种类详解
  20. iOS 上架App Store 遇到的坑

热门文章

  1. 将DP83848替换成LAN8720配置
  2. scp 保留文件属组_SCP和Rsync远程拷贝的几个技巧
  3. 硬盘零磁道故障解决方案
  4. axb_2019_heap详解
  5. 概率,随机变量,离散型连续型,边缘分布
  6. 实战渗透浅谈--一次巧合偶然的sql注入
  7. 同余定理与费马(Fermat)小定理
  8. Android 点击键盘外的区域收起键盘
  9. MiniUI 在线示例
  10. LCS(LKT)版权保护芯片方案说明(三)参数保护方案