免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
ページからデータを取得
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver1= webdriver.Chrome()
url='http://www.guzicha'
driver1.get(url)
blist=[]
for i in range(1,8):
bh=driver1.find_elements_by_xpath('//*[@id="keypad"]/table/tbody/tr['+str(i)+']/td[2]/a')
for t in bh:
if t.text == '':
print('empty',t)
continue
para={}
para['bihua']=i
para['bstyle']=t.get_attribute('name')
para['bvalue']=t.text
blist.append(para)
サブ要素の抽出
# find_elements_by_xpath("./*") 找到所有子元素
# find_elements_by_xpath("./..") 找到父元素
qt=driver1.find_element_by_xpath('//*[@id="keypad"]/table/tbody/tr[8]/td[2]')
slist=qt.find_elements_by_xpath("./*")
b=0
for item in slist:
t=item.text
if t == '':continue
if '畫' in t:
b=int(t.replace('畫','').strip())
print(b)
continue
para={}
para['bihua']=b
para['bstyle']=item.get_attribute('name')
para['bvalue']=item.text
blist.append(para)
データベースのsqliteに保存されています
import os
import sqlite3
dbname='cjk_bs.db'
paralist=dic2para(blist)
mdx2db(dbname,paralist)
def dic2para(blist):
paralist=[]
for item in blist:
paralist.append((item['bvalue'],item['bstyle'],item['bihua']))
return paralist
def mdx2db(dbname,paralist):
if os.path.isfile(dbname):
os.remove(dbname)
createdb(dbname)
insert(dbname,paralist)
def createdb(dbname):
conn = sqlite3.connect(dbname)
c = conn.cursor()
c.execute('''CREATE TABLE cjk_bs
(ID INTEGER PRIMARY KEY AUTOINCREMENT,
bkey TEXT NOT NULL,
bstyle TEXT ,
bnum INTEGER
);''')
conn.commit()
conn.close()
return 'ok'
def insert(dbname,paralist):
#sqlite
conn = sqlite3.connect(dbname)
c = conn.cursor()
for item in paralist:
msql='''INSERT INTO cjk_bs (bkey,bstyle,bnum ) VALUES (?,?,?)'''
para=item
c.execute(msql,para)
conn.commit()
conn.close()