同花顺爬虫

1。)记录板块的信息,
如下是一个板块的信息:

['881101','种植业与林业','http://q.10jqka.com.cn/thshy/detail/code/881101/']
这些信息都是固定的,所以用张表就可以存储起来。表--block.

MariaDB [tonghuashun]> show create table block \G;
*************************** 1. row ***************************
       Table: block
Create Table: CREATE TABLE `block` (
  `code` mediumint(9) DEFAULT NULL,
  `name` varchar(6) DEFAULT NULL,
  `url` varchar(48) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

下面是插入的数据的代码:

[root@VM_131_54_centos pachong]# cat block.py 
#encoding:utf8
from urllib import request
from lxml import etree
import pymysql

"""
将板块信息插入到mysql的block表中,这个只执行一次就行了。
"""
def getBlockMessage(url):
    ua_headers= {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36"}
    req = request.Request(url,headers=ua_headers)
    page = request.urlopen(req).read()
    page = etree.HTML(page)
    block_content = page.xpath('//div[@class="cate_items"]/a')
    block_url = page.xpath('//div[@class="cate_items"]/a/@href')
    tmp = []
    if len(block_content) == len(block_url):
        for x in range(len(block_url)):
            code = block_url[x].split("/")[-2]
            tmp.append([code,block_content[x].text,block_url[x]])
    return tmp

def insertIntoMysql(data):
    conn = pymysql.connect(host="localhost",user="root",password="jokerzhang",
                db="tonghuashun",charset="utf8")
    cur = conn.cursor()
    for x in data:
        sql="insert into block values({0},'{1}','{2}')".format(x[0],x[1],x[2])
        cur.execute(sql)
    conn.commit()
    conn.close()

if __name__ == "__main__":
    url = "http://q.10jqka.com.cn/thshy/"
    data = getBlockMessage(url)
    insertIntoMysql(data)

同花顺爬虫_第1张图片

2) 板块的信息已经有了,那么现在就要获取单个板块价格的信息。
同花顺爬虫_第2张图片
只需要划线框中的数据即可。这数据是实时更新的。

周一到周五正常交易
双休和国家法定节假日休市
早上9:15—9:25集合竞价
9:30—11:30开盘  
13:00—15:00开盘
一天交易四个小时

所以有如下要求:

1)数据是实时的,所以要不断的获取数据
2)要除去双休和国家法定节假日休市
3)只获取9:30—11:30的数据和13:00—15:00的数据。
4)因为对数据的实时性,并不做高要求,所以没个1分钟获取一次数据。

你可能感兴趣的:(python爬虫)