有三種方法,一是用微軟提供的擴展庫win32com來操作IE,二是用selenium的webdriver,三是用python自帶的HTMLParser解析。win32com可以獲得類似js里面的document對象,但貌似是只讀的(文檔都沒找到)。selenium則提供了Chrome,IE,FireFox等的支持,每種瀏覽器都有execute_script和find_element_by_xx方法,可以方便的執行js腳本(包括修改元素)和讀取html里面的元素。不足是selenium只提供對python2.6和2.7的支持。HTMLParser則是需要自己寫個類繼承基類,重寫解析元素的方法。個人感覺selenium用起來更方便,很容易操作html里的元素。
代碼如下:
win32com:
代碼如下:
#將滾動條滑到底,最多滑動20000像素
#模擬鍵盤右鍵,查看多張圖片
import sys
import win32com.client,win32api
import urllib.request
import time
import os
def main():
#獲取參數
url=sys.argv[1]
#操作IE
ie=win32com.client.Dispatch("InternetExplorer.Application")
ie.Navigate(url)
ie.Visible=True
last_url=''
dir_name=''
while last_url!=url:
print('/nThe URL is:',url,'/n')
while ie.ReadyState != 4:
time.sleep(1)
while ie.Document.readyState != "complete":
time.sleep(1)
#滑動滾動條
win=ie.Document.parentWindow
lastY=-1;
for i in range(40):
win.scrollTo(0,500*i)
nowY=win.pageYOffset
if(nowY==lastY):
break
lastY=nowY
time.sleep(0.4)
print('Document load state:',ie.Document.readyState)
doc=ie.Document
#第一次需要創建目錄
if(dir_name==''):
root_dir='E://img'
dir_name=root_dir+'//'+doc.title
dir_name=dir_name.replace('|','-')
新聞熱點
疑難解答