首页 > 其他分享 >2022/8/27暑假学习日记

2022/8/27暑假学习日记

时间:2022-08-27 10:25:39浏览次数:64  
标签:__ 27 VARCHAR 2022 import 暑假 time 20 main

import requests

 

import pandas as pd

 

from bs4 import BeautifulSoup

 

from lxml import etree

 

import time

 

import pymysql

 

from sqlalchemy import create_engine

 

from urllib.parse import urlencode  # 编码 URL 字符串

 

start_time = time.time()  #计算程序运行时间

 

def get_one_page(i):

 

   try:

 

       headers = {

 

           'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'

 

       }

 

       paras = {

 

       'reportTime': '2017-12-31',

 

       #可以改报告日期,比如2018-6-30获得的就是该季度的信息

 

       'pageNum': i   #页码

 

       }

 

       url = 'http://s.askci.com/stock/a/?' + urlencode(paras)

 

       response = requests.get(url,headers = headers)

 

       if response.status_code == 200:

 

           return response.text

 

       return None

 

   except RequestException:

 

       print('爬取失败')

 

def parse_one_page(html):

 

   soup = BeautifulSoup(html,'lxml')

 

   content = soup.select('#myTable04')[0] #[0]将返回的list改为bs4类型

 

   tbl = pd.read_html(content.prettify(),header = 0)[0]

 

   # prettify()优化代码,[0]从pd.read_html返回的list中提取出DataFrame

 

   tbl.rename(columns = {'序号':'serial_number', '股票代码':'stock_code', '股票简称':'stock_abbre', '公司名称':'company_name', '省份':'province', '城市':'city', '主营业务收入(201712)':'main_bussiness_income', '净利润(201712)':'net_profit', '员工人数':'employees', '上市日期':'listing_date', '招股书':'zhaogushu', '公司财报':'financial_report', '行业分类':'industry_classification', '产品类型':'industry_type', '主营业务':'main_business'},inplace = True)

 

   return tbl

 

def generate_mysql():

 

   conn = pymysql.connect(

 

       host='localhost',

 

       user='root',

 

       password='******',

 

       port=3306,

 

       charset = 'utf8', 

 

       db = 'wade')

 

   cursor = conn.cursor()

 

   sql = 'CREATE TABLE IF NOT EXISTS listed_company (serial_number INT(20) NOT NULL,stock_code INT(20) ,stock_abbre VARCHAR(20) ,company_name VARCHAR(20) ,province VARCHAR(20) ,city VARCHAR(20) ,main_bussiness_income VARCHAR(20) ,net_profit VARCHAR(20) ,employees INT(20) ,listing_date DATETIME(0) ,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 = 'wade'):

 

   engine = create_engine('mysql+pymysql://root:******@localhost:3306/{0}?charset=utf8'.format(db))

 

   try:

 

       tbl.to_sql('listed_company2',con = engine,if_exists='append',index=False)

 

       # append表示在原有表基础上增加,但该表要有表头

 

   except Exception as e:

 

       print(e)

 

def main(page):

 

   generate_mysql()

 

   for i in range(1,page): 

 

       html = get_one_page(i)

 

       tbl = parse_one_page(html)

 

       write_to_sql(tbl)

 

# # 单进程

 

if __name__ == '__main__':   

 

   main(178)

 

   endtime = time.time()-start_time

 

   print('程序运行了%.2f秒' %endtime)

 

# 多进程

 

from multiprocessing import Pool

 

if __name__ == '__main__':

 

    pool = Pool(4)

 

    pool.map(main, [i for i in range(1,178)])  #共有178页

 

   endtime = time.time()-start_time

 

   print('程序运行了%.2f秒' %(time.time()-start_time))

 

标签:__,27,VARCHAR,2022,import,暑假,time,20,main
From: https://www.cnblogs.com/liuchao437/p/16629889.html

相关文章

  • 2022-08-26 第六小组 高佳誉 学习笔记
    前情提要(博主在复习前端知识,所以近几天没有更新博客。相关前端内容可见博主其他随笔)JQurey重点事件与JS的区别选择器思维导图知识点1.定义JQuery是一个快速、......
  • zxb2022习题班26
    (1)购买日是2x21年12月31日,理由:从该日起,甲公司能够控制乙公司的财务和经营决策;该项交易后续不存在实质性障碍。商誉=10*10000-100000*80%=20000 相关会计分录:借:长投(1......
  • 2022 最新中国电影票房排行榜 All In One
    2022最新中国电影票房排行榜AllInOnerefshttps://piaofang.maoyan.com/dashboard/movie©xgqfrms2012-2020www.cnblogs.com/xgqfrms发布文章使用:只允许注......
  • 2022.35 物联网安全
    从物联网的分层架构看,在每一层中都有不同的安全风险威胁,针对这些风险威胁,应用、平台、网络与终端分别有不同的安全需求。因此,物联网的安全应包括“感知安全”、“网络安全......
  • 2022 跳坑(或妙计)记录
    P7143[THUPC2021初赛]线段树有恒等式\[\sum_{i=1}^ni(n+1-i)=\binom{n+2}{3}\]左式为\(n\)长度所有子串长度和。组合理解:我们将\([0,n+1]\)共\(n+2\)个位置......
  • 【游记】NOI2022 游记
    往期回顾:NOI2020,NOI2021。Day0在寝室打摆,敲一下板子。Day1八点开考。第一眼看到有交互题,再一看交互题题面巨长,窒息。然后看T1,发现是个非常简单的DS,接着开T2。......
  • 2022-8-26 每日一题-最大的两个数-
    1464.数组中两元素的最大乘积难度简单53收藏分享切换为英文接收动态反馈给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1......
  • 2022-8-26第一组孙乃宇Jquery
    JqueryJS库:别人写好的JS文件,我们拿来直接用开发中,会引入很多的.js文件JQuery.js------濒临淘汰,经典。10%以下css库,bootstrap,layui,easyui。React.js-------30%市场......
  • NOI2022游记,Au
    前言8.19:说实话,我在这里说几句话还不如水群,新番把我心态搞炸了,我现在急需快乐所以像游记这种吹水+回忆的文章让我现在非常痛苦。Day-1(8.19)上午是信心赛,太好辣,坐等......
  • 【2022-08-26】python前端开发(五)
    python前端开发(五)JS获取值操作普通数据(输入、选择) 标签对象.value文件数据(上传) 标签对象.files 标签对象.files[0]leti1Ele=document.getElementById('d1......