国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 教你快速上手Selenium爬蟲,萬物皆可爬

教你快速上手Selenium爬蟲,萬物皆可爬

2021-12-23 00:35Amo Xiang Python

這篇文章主要介紹了教你如何快速上手Selenium,文中附含詳細示例代碼,包含基本使用以及操作步驟,有需要的朋友可以參考下,希望大家多多討論交流

一、基本使用

selenium 的基本使用步驟:

  • 打開瀏覽器;
  • 獲取瀏覽器頁面的特定內容;
  • 控制瀏覽器頁面上的控件,如向一個文本框中輸入一個字符串;
  • 關閉瀏覽器。

示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
browser = webdriver.Chrome()
try:
    browser.get('https://www.jd.com')
    input_t = browser.find_element_by_id('key')
    input_t.send_keys('python爬蟲')
    input_t.send_keys(Keys.ENTER)  # 模擬按下Enter鍵位
    wait = WebDriverWait(browser, 4# 設置最長等待時間4秒
    wait.until(ec.presence_of_all_elements_located((By.ID, 'J_goodsList')))
    print(browser.title)  # 顯示搜索頁面的標題
    print(browser.current_url)
    print(browser.page_source)
    browser.close()
except Exception as e:
    print(e)
    browser.close()

二、查找節點

2.1 查找單個節點

html 源碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表單</title>
</head>
<body>
    <script>
        function onclick_form(){
            alert(document.getElementById('name').value +
                document.getElementById('age').value +
                document.getElementsByName('country')[0].value+
                document.getElementsByClassName('myclass')[0].value)
        }
 
    </script>
    姓名:<input id="name"><p></p>
    年齡:<input id="age"><p></p>
    國家:<input name="country"><p></p>
    收入:<input class="myclass"><p></p>
    <button onclick="onclick_form()">提交</button>
</body>
</html>

樣式如下圖所示:

教你快速上手Selenium爬蟲,萬物皆可爬

python 代碼自動填充上圖中的表單:

?
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
from selenium import webdriver
from selenium.webdriver.common.by import By
 
# 不支持本地網頁
browser = webdriver.Chrome()
try:
    # 這里我是用flask自己搭建的一個服務 訪問該頁面即可打開demo.html
    browser.get('http://127.0.0.1:5000/')
    input_t = browser.find_element_by_id('name')  # 通過id屬性查找姓名input節點
    input_t.send_keys('Amo')  # 自動輸入
    input_t = browser.find_element_by_id('age')
    input_t.send_keys('18')
    input_t = browser.find_element_by_name('country')  # 通過name屬性查找國家input節點
    input_t.send_keys('中國')
    # 通過class屬性查找收入input節點
    input_t = browser.find_element_by_class_name('myclass')
    input_t.send_keys('1850')
    # 或下面的代碼
    input_t = browser.find_element(By.CLASS_NAME, 'myclass')
    # 要想覆蓋前面的輸入,需要清空input節點,否則會在input節點原來的內容后面追加新內容
    input_t.clear()
    input_t.send_keys('3500')
except Exception as e:
    print(e)
    browser.close()

效果如下圖所示:

教你快速上手Selenium爬蟲,萬物皆可爬

2.2 查找多個節點

教你快速上手Selenium爬蟲,萬物皆可爬

示例代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from selenium import webdriver
from selenium.webdriver.common.by import By
 
# 不支持本地網頁
browser = webdriver.Chrome()
try:
    browser.get('https://www.jd.com'# 打開京東
    # 根據節點名查找所有名為li的節點
    li_list = browser.find_elements_by_tag_name('li')
    # 輸出節點本身
    print(li_list)
    print(len(li_list))
    print(li_list[0].text)
    ul = browser.find_elements(By.TAG_NAME, 'ul')
    print(ul)
    print(ul[0].text)
    browser.close()
except Exception as e:
    print(e)
    browser.close()

三、節點交互

使用 selenium 通過模擬瀏覽器單擊動作循環單擊頁面上的6個按鈕,單擊每個按鈕后,按鈕下方的 div 就會按照按鈕的背景顏色設置 div 的背景色。

demo1.html 靜態頁面代碼如下:

?
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
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>彩色按鈕</title>
</head>
<body>
    <script>
 
        function onclick_color(e) {
            document.getElementById("bgcolor").style.background = e.style.background
        }
    </script>
  <button class="mybutton" style="background: red" onclick="onclick_color(this)">按鈕1</button>
  <button class="mybutton" style="background: blue" onclick="onclick_color(this)">按鈕2</button>
  <button class="mybutton" style="background: yellow" onclick="onclick_color(this)">按鈕3</button>
  <br>
  <button class="mybutton" style="background: green" onclick="onclick_color(this)">按鈕4</button>
  <button class="mybutton" style="background: blueviolet" onclick="onclick_color(this)">按鈕5</button>
  <button class="mybutton" style="background: gold" onclick="onclick_color(this)">按鈕6</button>
  <p></p>
  <div id="bgcolor" style="width: 200px; height: 200px">
  </div>
</body>
</html>

然后使用 Python 代碼模擬瀏覽器的單擊動作自動單擊頁面上的 6 個按鈕。P

ython 代碼如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from selenium import webdriver
import time
 
browser = webdriver.Chrome()
try:
    browser.get('http://127.0.0.1:5000/')
    buttons = browser.find_elements_by_class_name('mybutton')
    i = 0
    while True:
        buttons[i].click()
        time.sleep(1)
        i += 1
        if i == len(buttons):
            i = 0
except Exception as e:
    print(e)
    browser.close()

四、動作鏈

使用 selenium 動作鏈的 move_to_element 方法模擬鼠標移動的動作,自動顯示京東商城首頁左側的每個二級導航菜單。

示例代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
 
browser = webdriver.Chrome()
try:
    browser.get('https://www.jd.com')
    actions = ActionChains(browser)
    li_list = browser.find_elements_by_css_selector(".cate_menu_item")
    for li in li_list:
        actions.move_to_element(li).perform()
        time.sleep(1)
except Exception as e:
    print(e)
    browser.close()

使用 selenium 動作鏈的 drag_and_drop 方法將一個節點拖動到另外一個節點上。

示例代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from selenium import webdriver
from selenium.webdriver import ActionChains
 
browser = webdriver.Chrome()
try:
    browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
    browser.switch_to.frame('iframeResult')
    source = browser.find_element_by_css_selector('#draggable')
    target = browser.find_element_by_css_selector('#droppable')
    actions = ActionChains(browser)
    actions.drag_and_drop(source, target)
    actions.perform()
except Exception as e:
    print(e)
    browser.close()

五、執行 JavaScript 代碼

使用 selenium 的 execute_script 方法讓京東商城首頁滾動到最低端,然后彈出一個對話框。示

例代碼如下:

?
1
2
3
4
5
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.jd.com')
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_async_script('alert("已經到達頁面底端")')

六、獲取節點信息

使用 selenium 的 API 獲取京東商城首頁 HTML 代碼中 id 為 navitems-group1 的 ul 節點的相關信息以及 ul 節點中 li 子節點的相關信息。

示例代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from selenium import webdriver
 
options = webdriver.ChromeOptions()
options.add_argument('headless')
 
browser = webdriver.Chrome(chrome_options=options)
# browser = webdriver.PhantomJS('./webdriver/phantomjs')
browser.get('https://www.jd.com')
ul = browser.find_element_by_id("navitems-group1")
print(ul.text)
print('id', '=', ul.id# 內部id,不是節點id屬性值
print('location', '=', ul.location)
 
print('tag_name', '=', ul.tag_name)
print('size', '=', ul.size)
li_list = ul.find_elements_by_tag_name("li")
for li in li_list:
    print(type(li))
    # 屬性沒找到,返回None
    print('<', li.text, '>', 'class=', li.get_attribute('class'))
    a = li.find_element_by_tag_name('a')
    print('href', '=', a.get_attribute('href'))
browser.close()

執行結果如下:

秒殺
優惠券
PLUS會員
品牌閃購
id = 6bb622fb-df60-4619-a373-b55e44dc27af
location = {'x': 203, 'y': 131}
tag_name = ul
size = {'height': 40, 'width': 294}
<class 'selenium.webdriver.remote.webelement.WebElement'>
< 秒殺 > class= fore1
href = https://miaosha.jd.com/
<class 'selenium.webdriver.remote.webelement.WebElement'>
< 優惠券 > class= fore2
href = https://a.jd.com/
<class 'selenium.webdriver.remote.webelement.WebElement'>
< PLUS會員 > class= fore3
href = https://plus.jd.com/index?flow_system=appicon&flow_entrance=appicon11&flow_channel=pc
<class 'selenium.webdriver.remote.webelement.WebElement'>
< 品牌閃購 > class= fore4
href = https://red.jd.com/

七、管理 Cookies

使用 selenium API 獲取 cookie 列表,并添加新的 cookie,以及刪除所有的 cookie。

示例代碼如下:

?
1
2
3
4
5
6
7
8
9
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.jd.com')
print(browser.get_cookies())
browser.add_cookie({'name': 'name',
                    'value': 'jd', 'domain': 'www.jd.com'})
print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies())  # 大部分刪除了,可能還剩下一些

八、改變節點屬性的值

通過 javascript 代碼改變百度搜索按鈕的位置,讓這個按鈕在多個位置之間移動,時間間隔是2秒。

示例代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
search_button = driver.find_element_by_id("su"# 百度搜索按鈕
# arguments[0]對應的是第一個參數,可以理解為python里的%s傳參,與之類似
x_positions = [50, 90, 130, 170]
y_positions = [100, 120, 160, 90]
for i in range(len(x_positions)):
    js = '''
     arguments[0].style.position = "absolute";
     arguments[0].style.left="{}px";
     arguments[0].style.top="{}px";
    '''.format(x_positions[i], y_positions[i])
    driver.execute_script(js, search_button)
    time.sleep(2)

使用 javascript 代碼修改京東商城首頁頂端的前兩個導航菜單的文本和鏈接,分別改成 ‘3天極速掌握 Scala 語言:First Day' 和 ‘數據倉庫 Hive 從入門到小牛(一)',導航鏈接也會發生改變。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.get("https://www.jd.com")
ul = driver.find_element_by_id('navitems-group1')
li_list = ul.find_elements_by_tag_name('li')
a1 = li_list[0].find_element_by_tag_name('a')
a2 = li_list[1].find_element_by_tag_name('a')
js = '''
 arguments[0].text = '3天極速掌握 Scala 語言:First Day'
 arguments[0].href = 'https://blog.csdn.net/xw1680/article/details/118743183'
 arguments[1].text = '數據倉庫 Hive 從入門到小牛(一)'
 arguments[1].href = 'https://blog.csdn.net/xw1680/article/details/118675528'
 '''
driver.execute_script(js, a1, a2)

效果如下圖所示:

教你快速上手Selenium爬蟲,萬物皆可爬

到此這篇關于教你快速上手Selenium爬蟲,萬物皆可爬的文章就介紹到這了,更多相關Selenium爬蟲內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/xw1680/article/details/118931255

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品一区二 | 91精品国产91久久久久久最新 | 日韩精品一区二区三区av | 狠狠干最新网址 | 久久99精品国产99久久6尤 | 成人综合视频在线 | heyzo 在线| 欧美3区 | 韩国精品一区 | 亚洲日本视频 | 91精品国产综合久久久久久漫画 | 观看av| 久久久久久亚洲 | 久久久看片| 欧美狠狠操 | 黄色国产网站 | 亚洲国产精品美女 | 一区二区三区在线播放 | 免费看黄在线 | av一区二区三区四区 | 欧美中文在线 | 成人在线中文字幕 | 精品2区| 午夜黄色 | 欧美成人高清 | 天堂av中文在线 | 免费观看www7722午夜电影 | 午夜男人视频 | 亚洲国产精 | 国内精品一区二区三区视频 | 91成人小视频 | 麻豆av在线播放 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美极品一区二区 | 91视频国产网站 | 欧美一级全黄 | av在线电影网站 | 久久伊人一区 | 日本一区二区在线播放 | 爱色av.com | 欧美色综合天天久久综合精品 |