python学習ノートselenium

14577 ワード

一.seleniumは強力なpythonライブラリで、数行のコードを使ってブラウザを制御し、自動的に開いたり、入力したり、クリックしたりすることができます.まるで本当のユーザーが操作しているようです.
1.ローカル環境のブラウザ設定:
from selenium import webdriver # selenium    webdriver  
driver = webdriver.Chrome() #      Chrome,       Chrome   

2.データの取得:
import time
#   Chrome       
from selenium import webdriver # selenium    webdriver  
driver = webdriver.Chrome() #      Chrome,       Chrome   

driver.get('URL') #     
time.sleep(1)
driver.close() #      

seleniumがデータを抽出する方法:
方法
さぎょう
find_element_by_tag_name
要素のラベル名で選択
find_element_by_class_name
要素のclass属性で選択
find_element_by_id
要素のid選択による
find_element_by_name
要素のname属性で選択
find_element_by_link_text
リンクテキストによるハイパーリンクの取得
find_element_by_partial_link_text
リンクされた一部のテキストからハイパーリンクを取得
#               '  ,   !'    

find_element_by_tag_name:         
#  

, !

# find_element_by_tag_name('h1') find_element_by_class_name: class #

, !

# find_element_by_class_name('title') find_element_by_id: id #

, !

# find_element_by_id('title') find_element_by_name: name #

, !

# find_element_by_name('hello') # find_element_by_link_text: # こんにちは、スパイダーマン! # find_element_by_link_text(' , !') find_element_by_partial_link_text: # こんにちは、スパイダーマン! # find_element_by_partial_link_text(' ')

複数のデータを抽出する方法:上記のすべての方法のelementを複素elementsに置き換えるとよい.
3.selenium解析とデータ抽出:
from selenium.webdriver.chrome.options import Options #  options     Options 
import time
from bs4 import BeautifulSoup

chrome_options = Options() #    Option  
chrome_options.add_argument('--headless') #        
driver = RemoteWebDriver("http://chromedriver.python-class-fos.svc:4444/wd/hub", chrome_options.to_capabilities()) #        

4.自動操作ブラウザ:
.send_keys() #       ,      
.click() #     
.clear() #      

ケース:
#   Chrome       
from selenium import webdriver #  selenium    webdriver  
import time #   time  
driver = webdriver.Chrome() #      Chrome,       Chrome   

driver.get('https://localprod.pandateacher.com/python-manuscript/hello-spiderman/') #     
time.sleep(2) #     ,       

teacher = driver.find_element_by_id('teacher') #   【         】        
teacher.send_keys('  ') #     
assistant = driver.find_element_by_name('assistant') #   【         】        
assistant.send_keys('   ') #     
button = driver.find_element_by_class_name('sub') #   【  】  
button.click() #   【  】  
time.sleep(1)
driver.close() #      

QQ音楽の中で周杰倫の歌曲の評論を登ります:
#             
from selenium import webdriver 
from bs4 import BeautifulSoup
import time

chrome_options = Options() #    Option  
chrome_options.add_argument('--headless') #        
driver = RemoteWebDriver("http://chromedriver.python-class-fos.svc:4444/wd/hub", chrome_options.to_capabilities()) #        

driver.get('https://y.qq.com/n/yqq/song/000xdZuV2LcQ19.html') #     
time.sleep(2)

button = driver.find_element_by_class_name('js_get_more_hot') #       【      】
button.click() #   
time.sleep(2) #     

pageSource = driver.page_source #   Elements           
soup = BeautifulSoup(pageSource,'html.parser')  #   bs    
comments = soup.find('ul',class_='js_hot_list').find_all('li',class_='js_cmt_li') #   bs    
print(len(comments)) #   comments   

for comment in comments: #   
    sweet = comment.find('p') #     
    print ('  :%s
---
'
%sweet.text) # driver.close() # #
#   Chrome           :
from selenium import  webdriver # selenium    webdriver  
from selenium.webdriver.chrome.options import Options #  options     Options 

chrome_options = Options() #    Option  
chrome_options.add_argument('--headless') #  Chrome          
driver = webdriver.Chrome(options = chrome_options) #      Chrome,