效果预览
代码预览
from selenium import webdriver
from selenium. webdriver. common. keys import Keys
from selenium. webdriver. chrome. options import Options
from selenium. webdriver. common. by import By
from selenium. webdriver. support. ui import WebDriverWait
from selenium. webdriver. support import expected_conditions as EC
import re , time , json, os
chrome_options = Options( )
chrome_options. add_argument( "--headless" )
chrome_options. add_argument( "log-level=3" )
driver = webdriver. Chrome( chrome_options= chrome_options)
driver. get( "https://www.allhistory.com" )
def message ( name) :
global search_name
element1 = WebDriverWait( driver, 8 ) . until(
EC. presence_of_element_located(
( By. CSS_SELECTOR, '#header-search-box > input' ) )
)
element1. send_keys( name)
element1. send_keys( Keys. RETURN)
try :
element2 = WebDriverWait( driver, 10 ) . until(
EC. presence_of_element_located(
( By. CLASS_NAME, 'node-name-all' ) )
)
if name == element2. text. split( '(' ) [ 0 ] . strip( ) :
search_name = name
print ( '搜索到的名字为:' , element2. text, '匹配一致' )
else :
print ( '搜索到的名字为:' , element2. text, '不完全匹配' )
search_name = '模糊匹配-&-' + name+ '-&-' + element2. text
element2. click( )
except Exception as e:
print ( '没找到' )
raise e
time. sleep( 0.1 )
driver. close( )
s = driver. window_handles
time. sleep( 0.2 )
driver. switch_to. window( s[ - 1 ] )
element3 = WebDriverWait( driver, 5 ) . until(
EC. presence_of_element_located(
( By. ID, 'entry-comp-Summary' ) )
)
jianjie = element3. text
base_info = re. findall(
r'<span class="key".*?>(.+?)</span>.*?<span class="value" title="(.+?)">' , driver. page_source, re. DOTALL)
return { '简介' : jianjie, '基本信息' : base_info}
name = '别管我'
while name:
name = input ( '\n->直接回车可以退出\n>>请输入你要查询的历史人物名称:' )
if len ( name) == 0 :
print ( '\n>>>欢迎下次使用,再见' )
driver. quit( )
break
jieguo = message( name)
print ( jieguo)
if not os. path. exists( 'personages' ) :
os. mkdir( 'personages' )
with open ( f'personages\{search_name}.txt' , 'w' , encoding= 'utf8' ) as file :
file . write( str ( jieguo) )
print ( f'----{search_name}.txt----保存成功-----' )