概述
在進(jìn)行網(wǎng)站爬取數(shù)據(jù)的時(shí)候,會(huì)發(fā)現(xiàn)很多網(wǎng)站都進(jìn)行了反爬蟲的處理,如JS加密,Ajax加密,反Debug等方法,通過(guò)請(qǐng)求獲取數(shù)據(jù)和頁(yè)面展示的內(nèi)容完全不同,這時(shí)候就用到Selenium技術(shù),來(lái)模擬瀏覽器的操作,然后獲取數(shù)據(jù)。本文以一個(gè)簡(jiǎn)單的小例子,簡(jiǎn)述Python搭配Tkinter和Selenium進(jìn)行瀏覽器的模擬操作,僅供學(xué)習(xí)分享使用,如有不足之處,還請(qǐng)指正。
什么是Selenium?
Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具,Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。Selenium支持多種操作系統(tǒng),如Windows、Linux、IOS等,如果需要支持Android,則需要特殊的selenium,本文主要以IE11瀏覽器為例。
安裝Selenium
通過(guò)pip install selenium 進(jìn)行安裝即可,如果速度慢,則可以使用國(guó)內(nèi)的鏡像進(jìn)行安裝。
涉及知識(shí)點(diǎn)
程序雖小,除了需要掌握的Html ,JavaScript,CSS等基礎(chǔ)知識(shí)外,本例涉及的Python相關(guān)知識(shí)點(diǎn)還是蠻多的,具體如下:
- Selenium相關(guān):
Selenium進(jìn)行元素定位,主要有ID,Name,ClassName,Css Selector,Partial LinkText,LinkText,XPath,TagName等8種方式。
Selenium獲取單一元素(如:find_element_by_xpath)和獲取元素?cái)?shù)組(如:find_elements_by_xpath)兩種方式。
Selenium元素定位后,可以給元素進(jìn)行賦值和取值,或者進(jìn)行相應(yīng)的事件操作(如:click)。
- 線程(Thread)相關(guān):
為了防止前臺(tái)頁(yè)面卡主,本文用到了線程進(jìn)行后臺(tái)操作,如果要定義一個(gè)新的線程,只需要定義一個(gè)類并繼承threading.Thread,然后重寫run方法即可。
在使用線程的過(guò)程中,為了保證線程的同步,本例用到了線程鎖,如:threading.Lock()。
- 隊(duì)列(queue)相關(guān):
本例將Selenium執(zhí)行的過(guò)程信息,保存到對(duì)列中,并通過(guò)線程輸出到頁(yè)面顯示。queue默認(rèn)先進(jìn)先出方式。
對(duì)列通過(guò)put進(jìn)行壓棧,通過(guò)get進(jìn)行出棧。通過(guò)qsize()用于獲取當(dāng)前對(duì)列元素個(gè)數(shù)。
- 日志(logging.Logger)相關(guān):
為了保存Selenium執(zhí)行過(guò)程中的日志,本例用到了日志模塊,為Pyhton自帶的模塊,不需要額外安裝。
Python的日志共六種級(jí)別,分別是:NOTSET,DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL,CRITICAL。
示例效果圖
本例主要針對(duì)某一配置好的商品ID進(jìn)行輪詢,監(jiān)控是否有貨,有貨則加入購(gòu)物車,無(wú)貨則繼續(xù)輪詢,如下圖所示:
核心代碼
本例最核心的代碼,就是利用Selenium進(jìn)行網(wǎng)站的模擬操作,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 |
|
其他輔助類
日志類(LogHelper),代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
|
配置類(ConfigHelper)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
線程類(MyThread)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
?現(xiàn)在我也找了很多測(cè)試的朋友,做了一個(gè)分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時(shí)找不到資源,沒人解答問(wèn)題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動(dòng)化,性能,安全,測(cè)試開發(fā)等等方面有一定建樹的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會(huì)分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開源的!??!
qq群號(hào):485187702【暗號(hào):csdn11】
最后感謝每一個(gè)認(rèn)真閱讀我文章的人,看著粉絲一路的上漲和關(guān)注,禮尚往來(lái)總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走!?希望能幫助到你!【100%無(wú)套路免費(fèi)領(lǐng)取】
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-797508.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-797508.html
到了這里,關(guān)于Python使用Selenium模擬瀏覽器自動(dòng)操作功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!