Hướng dẫn how to automate website clicks python - cách tự động hóa lần nhấp vào trang web python

Trong hướng dẫn này, bạn sẽ học các kỹ thuật tự động hóa web Python nâng cao: Sử dụng selenium với trình duyệt không có đầu, xuất dữ liệu bị loại bỏ sang các tệp CSV và gói mã cạo của bạn trong lớp Python.

Động lực: Theo dõi thói quen nghe

Giả sử rằng bạn đã nghe nhạc trên Bandcamp một thời gian và bạn thấy mình ước mình có thể nhớ một bài hát bạn đã nghe vài tháng trước.

Chắc chắn, bạn có thể tìm hiểu về lịch sử trình duyệt của mình và kiểm tra từng bài hát, nhưng đó có thể là một nỗi đau mà tất cả những gì bạn nhớ là bạn đã nghe bài hát vài tháng trước và nó nằm trong thể loại điện tử.

Bạn sẽ rất tuyệt, bạn nghĩ rằng, nếu tôi có một hồ sơ về lịch sử lắng nghe của mình? Tôi chỉ có thể tìm kiếm các bài hát điện tử từ hai tháng trước, và tôi chắc chắn tìm thấy nó.

Hôm nay, bạn sẽ xây dựng một lớp Python cơ bản, được gọi là

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
6 kết nối với Bandcamp.com, phát nhạc từ phần Discovery Discovery của trang nhất và theo dõi lịch sử nghe của bạn.

Lịch sử nghe sẽ được lưu vào đĩa trong tệp CSV. Sau đó, bạn có thể khám phá tệp CSV đó trong ứng dụng bảng tính yêu thích của bạn hoặc thậm chí với Python.

Nếu bạn đã có một số kinh nghiệm với việc quét web trong Python, bạn đã quen thuộc với việc thực hiện các yêu cầu HTTP và sử dụng API Pythonic để điều hướng DOM. Bạn sẽ làm nhiều hơn như vậy ngày hôm nay, ngoại trừ với một sự khác biệt.

Hôm nay bạn sẽ sử dụng trình duyệt đầy đủ chạy ở chế độ không đầu để thực hiện các yêu cầu HTTP cho bạn.

Một trình duyệt không đầu chỉ là một trình duyệt web thông thường, ngoại trừ việc nó không chứa phần tử UI có thể nhìn thấy. Giống như bạn mong đợi, nó có thể thực hiện nhiều hơn các yêu cầu: nó cũng có thể hiển thị HTML (mặc dù bạn không thể thấy nó), giữ thông tin phiên và thậm chí thực hiện giao tiếp mạng không đồng bộ bằng cách chạy mã JavaScript.

Nếu bạn muốn tự động hóa web hiện đại, các trình duyệt không đầu là rất cần thiết.

Thành lập

Bước đầu tiên của bạn, trước khi viết một dòng Python duy nhất, là cài đặt một webDriver được hỗ trợ selen cho trình duyệt web yêu thích của bạn. Trong phần tiếp theo, bạn sẽ làm việc với Firefox, nhưng Chrome cũng có thể dễ dàng làm việc.

Giả sử rằng đường dẫn

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
7 nằm trong quá trình thực hiện của bạn
>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
8, ở đây, cách bạn sẽ cài đặt Firefox WebDriver, được gọi là
>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
9, trên máy Linux:

$ wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
$ tar xvfz geckodriver-v0.19.1-linux64.tar.gz
$ mv geckodriver ~/.local/bin

Tiếp theo, bạn cài đặt gói selenium, sử dụng

>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
0 hoặc bất cứ thứ gì bạn thích. Nếu bạn tạo ra một môi trường ảo cho dự án này, bạn chỉ cần nhập:

Bây giờ nó thời gian cho một ổ đĩa thử nghiệm.

Kiểm tra lái một trình duyệt không đầu

Để kiểm tra mọi thứ đang hoạt động, bạn quyết định thử tìm kiếm trên web cơ bản qua Duckduckgo. Bạn kích hoạt trình thông dịch python ưa thích của mình và nhập các loại sau:

>>>

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')

Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến

>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
1. Bạn đã thực hiện một thể hiện
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
3. Điều này giống như gõ
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
4 tại dòng lệnh.

Hướng dẫn how to automate website clicks python - cách tự động hóa lần nhấp vào trang web python

Bây giờ một trang được tải, bạn có thể truy vấn DOM bằng các phương thức được xác định trên đối tượng

>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
5 mới được đúc của bạn. Nhưng làm thế nào để bạn biết những gì để truy vấn?

Cách tốt nhất là mở trình duyệt web của bạn và sử dụng các công cụ phát triển của nó để kiểm tra nội dung của trang. Ngay bây giờ, bạn muốn nhận được mẫu tìm kiếm để bạn có thể gửi truy vấn. Bằng cách kiểm tra trang chủ Duckduckgo, bạn thấy rằng phần tử tìm kiếm

>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
6 có thuộc tính
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
7
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
8. Đó chỉ là những gì bạn cần:

>>>

>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()

Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến

>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
1. Bạn đã thực hiện một thể hiện
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
3. Điều này giống như gõ
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
4 tại dòng lệnh.

>>>

>>> results = browser.find_elements_by_class_name('result')
>>> print(results[0].text)

Real Python - Real Python
Get Real Python and get your hands dirty quickly so you spend more time making real applications. Real Python teaches Python and web development from the ground up ...
https://realpython.com

Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến

>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
1. Bạn đã thực hiện một thể hiện
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
3. Điều này giống như gõ
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
4 tại dòng lệnh.

>>>

>>> browser.close()
>>> quit()

Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến >>> search_form = browser.find_element_by_id('search_form_input_homepage') >>> search_form.send_keys('real python') >>> search_form.submit() 1. Bạn đã thực hiện một thể hiện >>> search_form = browser.find_element_by_id('search_form_input_homepage') >>> search_form.send_keys('real python') >>> search_form.submit() 2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo >>> search_form = browser.find_element_by_id('search_form_input_homepage') >>> search_form.send_keys('real python') >>> search_form.submit() 3. Điều này giống như gõ >>> search_form = browser.find_element_by_id('search_form_input_homepage') >>> search_form.send_keys('real python') >>> search_form.submit() 4 tại dòng lệnh.

Bây giờ một trang được tải, bạn có thể truy vấn DOM bằng các phương thức được xác định trên đối tượng

>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
5 mới được đúc của bạn. Nhưng làm thế nào để bạn biết những gì để truy vấn?

  1. Cách tốt nhất là mở trình duyệt web của bạn và sử dụng các công cụ phát triển của nó để kiểm tra nội dung của trang. Ngay bây giờ, bạn muốn nhận được mẫu tìm kiếm để bạn có thể gửi truy vấn. Bằng cách kiểm tra trang chủ Duckduckgo, bạn thấy rằng phần tử tìm kiếm
    >>> search_form = browser.find_element_by_id('search_form_input_homepage')
    >>> search_form.send_keys('real python')
    >>> search_form.submit()
    
    6 có thuộc tính
    >>> search_form = browser.find_element_by_id('search_form_input_homepage')
    >>> search_form.send_keys('real python')
    >>> search_form.submit()
    
    7
    >>> search_form = browser.find_element_by_id('search_form_input_homepage')
    >>> search_form.send_keys('real python')
    >>> search_form.submit()
    
    8. Đó chỉ là những gì bạn cần:
  2. Bạn đã tìm thấy biểu mẫu tìm kiếm, sử dụng phương thức
    >>> search_form = browser.find_element_by_id('search_form_input_homepage')
    >>> search_form.send_keys('real python')
    >>> search_form.submit()
    
    9 để điền vào nó và sau đó là phương thức
    >>> results = browser.find_elements_by_class_name('result')
    >>> print(results[0].text)
    
    Real Python - Real Python
    Get Real Python and get your hands dirty quickly so you spend more time making real applications. Real Python teaches Python and web development from the ground up ...
    https://realpython.com
    
    0 để thực hiện tìm kiếm của bạn cho
    >>> results = browser.find_elements_by_class_name('result')
    >>> print(results[0].text)
    
    Real Python - Real Python
    Get Real Python and get your hands dirty quickly so you spend more time making real applications. Real Python teaches Python and web development from the ground up ...
    https://realpython.com
    
    1. Bạn có thể kiểm tra kết quả hàng đầu:
  3. Mọi thứ dường như đang hoạt động. Để ngăn chặn các phiên bản trình duyệt không đầu vô hình chồng chất lên máy của bạn, bạn đóng đối tượng trình duyệt trước khi thoát khỏi phiên Python của bạn:

Groovin xông trên giai điệu

Hướng dẫn how to automate website clicks python - cách tự động hóa lần nhấp vào trang web python

>>>

>>> opts = Option()
>>> opts.set_headless()
>>> browser = Firefox(options=opts)
>>> browser.get('https://bandcamp.com')
>>> browser.find_element_by_class('playbutton').click()

Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến

>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
1. Bạn đã thực hiện một thể hiện
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
3. Điều này giống như gõ
>>> search_form = browser.find_element_by_id('search_form_input_homepage')
>>> search_form.send_keys('real python')
>>> search_form.submit()
4 tại dòng lệnh.

>>>

>>> tracks = browser.find_elements_by_class_name('discover-item')
>>> len(tracks)  # 8
>>> tracks[3].click()

Một ca khúc mới nên được chơi! Đây là bước đầu tiên để khám phá Bandcamp bằng Python! Bạn dành một vài phút để nhấp vào các bản nhạc khác nhau trong môi trường Python của bạn nhưng sớm trở nên mệt mỏi với Thư viện tám bài hát ít ỏi.

Khám phá danh mục

Nhìn lại trình duyệt của bạn, bạn thấy các nút để khám phá tất cả các bản nhạc đặc trưng trong phần khám phá âm nhạc của Bandcamp. Đến bây giờ, điều này cảm thấy quen thuộc: mỗi nút có giá trị

>>> results = browser.find_elements_by_class_name('result')
>>> print(results[0].text)

Real Python - Real Python
Get Real Python and get your hands dirty quickly so you spend more time making real applications. Real Python teaches Python and web development from the ground up ...
https://realpython.com
2 là
>>> results = browser.find_elements_by_class_name('result')
>>> print(results[0].text)

Real Python - Real Python
Get Real Python and get your hands dirty quickly so you spend more time making real applications. Real Python teaches Python and web development from the ground up ...
https://realpython.com
7. Nút cuối cùng là nút Next Next Next sẽ hiển thị tám bản nhạc tiếp theo trong danh mục. Bạn đi làm:

>>>

>>> next_button = [e for e in browser.find_elements_by_class_name('item-page')
                   if e.text.lower().find('next') > -1]
>>> next_button.click()

Tuyệt quá! Bây giờ bạn muốn xem các bản nhạc mới, vì vậy bạn nghĩ rằng, tôi sẽ chỉ lặp lại biến

>>> results = browser.find_elements_by_class_name('result')
>>> print(results[0].text)

Real Python - Real Python
Get Real Python and get your hands dirty quickly so you spend more time making real applications. Real Python teaches Python and web development from the ground up ...
https://realpython.com
8 của tôi như tôi đã làm vài phút trước. Nhưng đây là nơi mọi thứ bắt đầu trở nên khó khăn.

Đầu tiên, Bandcamp đã thiết kế trang web của họ để con người thích sử dụng, không phải các tập lệnh Python truy cập theo chương trình. Khi bạn gọi

>>> results = browser.find_elements_by_class_name('result')
>>> print(results[0].text)

Real Python - Real Python
Get Real Python and get your hands dirty quickly so you spend more time making real applications. Real Python teaches Python and web development from the ground up ...
https://realpython.com
9, trình duyệt web thực sự phản hồi bằng cách thực hiện một số mã JavaScript.

Nếu bạn dùng thử trong trình duyệt của mình, bạn sẽ thấy rằng một số thời gian trôi qua khi danh mục các bài hát cuộn với hiệu ứng hoạt hình mượt mà. Nếu bạn cố gắng đăng lại biến

>>> results = browser.find_elements_by_class_name('result')
>>> print(results[0].text)

Real Python - Real Python
Get Real Python and get your hands dirty quickly so you spend more time making real applications. Real Python teaches Python and web development from the ground up ...
https://realpython.com
8 của mình trước khi hoạt hình kết thúc, bạn có thể không nhận được tất cả các bản nhạc và bạn có thể nhận được một số bản mà bạn không muốn.

Những gì giải pháp? Bạn chỉ có thể ngủ trong một giây, hoặc, nếu bạn chỉ chạy tất cả những thứ này trong vỏ trăn, có lẽ bạn đã thắng được thậm chí chú ý. Rốt cuộc, bạn cũng cần có thời gian để gõ.

Một kink nhỏ khác là một cái gì đó chỉ có thể được phát hiện thông qua thử nghiệm. Bạn cố gắng chạy lại cùng một mã:

>>>

>>> tracks = browser.find_elements_by_class_name('discover-item')
>>> assert(len(tracks) == 8)
AssertionError
...

Nhưng bạn nhận thấy một cái gì đó lạ.

>>> browser.close()
>>> quit()
1 không bằng
>>> browser.close()
>>> quit()
2 mặc dù chỉ nên hiển thị lô tiếp theo của
>>> browser.close()
>>> quit()
2. Đào thêm một chút, bạn thấy rằng danh sách của bạn chứa một số bản nhạc đã được hiển thị trước đó. Để chỉ nhận được các bản nhạc thực sự có thể nhìn thấy trong trình duyệt, bạn cần lọc kết quả một chút.

Sau khi thử một vài điều, bạn quyết định chỉ theo dõi nếu tọa độ

>>> browser.close()
>>> quit()
4 của nó trên trang nằm trong hộp giới hạn của phần tử chứa. Container danh mục có giá trị
>>> results = browser.find_elements_by_class_name('result')
>>> print(results[0].text)

Real Python - Real Python
Get Real Python and get your hands dirty quickly so you spend more time making real applications. Real Python teaches Python and web development from the ground up ...
https://realpython.com
2 là
>>> browser.close()
>>> quit()
6. Đây là cách bạn tiến hành:

>>>

>>> discover_section = self.browser.find_element_by_class_name('discover-results')
>>> left_x = discover_section.location['x']
>>> right_x = left_x + discover_section.size['width']
>>> discover_items = browser.find_element_by_class_name('discover_items')
>>> tracks = [t for t in discover_items
              if t.location['x'] >= left_x and t.location['x'] < right_x]
>>> assert len(tracks) == 8

Xây dựng một lớp học

Nếu bạn đang trở nên mệt mỏi khi getyping các lệnh tương tự nhiều lần trong môi trường Python của bạn, bạn nên đổ một số trong số đó vào một mô -đun. Một lớp cơ bản cho thao tác bandcamp của bạn nên làm như sau:

  1. Khởi tạo trình duyệt không đầu và điều hướng đến Bandcamp
  2. Giữ một danh sách các bản nhạc có sẵn
  3. Hỗ trợ tìm kiếm nhiều bài hát hơn
  4. Chơi, Tạm dừng và Bỏ qua Đường đua

Ở đây, mã cơ bản, tất cả trong một lần:

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
0

Khá gọn gàng. Bạn có thể nhập nó vào môi trường Python của bạn và chạy Bandcamp theo chương trình! Nhưng chờ đã, bạn đã bắt đầu toàn bộ điều này bởi vì bạn muốn theo dõi thông tin về lịch sử nghe của bạn?

Thu thập dữ liệu có cấu trúc

Nhiệm vụ cuối cùng của bạn là theo dõi các bài hát mà bạn thực sự nghe. Làm thế nào bạn có thể làm điều này? Nó thực sự có nghĩa là gì khi nghe một cái gì đó? Nếu bạn đang xem xét danh mục, hãy dừng lại trong vài giây trên mỗi bài hát, liệu mỗi bài hát đó có được tính không? Chắc là không. Bạn sẽ cho phép một số thời gian khám phá, để tham gia vào việc thu thập dữ liệu của bạn.

Mục tiêu của bạn bây giờ là:

  1. Thu thập thông tin có cấu trúc về bản nhạc hiện đang phát
  2. Giữ một cơ sở dữ liệu của người ”
  3. Lưu và khôi phục cơ sở dữ liệu đó "đến và từ đĩa

Bạn quyết định sử dụng một cái tên được đặt tên để lưu trữ thông tin mà bạn theo dõi. Các bộ dữ liệu được đặt tên là tốt cho việc thể hiện các gói thuộc tính không có chức năng gắn liền với chúng, hơi giống với bản ghi cơ sở dữ liệu:

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
1

Để thu thập thông tin này, bạn thêm một phương thức vào lớp

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
6. Kiểm tra lại với các công cụ phát triển trình duyệt, bạn tìm thấy các phần tử và thuộc tính HTML phù hợp để chọn tất cả thông tin bạn cần. Ngoài ra, bạn chỉ muốn có được thông tin về bản nhạc hiện đang phát nếu có nhạc thực sự phát vào thời điểm đó. May mắn thay, trình phát trang thêm một lớp
>>> browser.close()
>>> quit()
8 vào nút phát bất cứ khi nào âm nhạc phát và xóa nó khi âm nhạc dừng lại.

Với những cân nhắc này, bạn viết một vài phương pháp:

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
2

Để có biện pháp tốt, bạn cũng sửa đổi phương thức

>>> browser.close()
>>> quit()
9 để theo dõi bản nhạc hiện đang phát:

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
3

Tiếp theo, bạn đã phải giữ một cơ sở dữ liệu nào đó. Mặc dù nó có thể không mở rộng tốt trong thời gian dài, bạn có thể đi xa với một danh sách đơn giản. Bạn thêm

>>> opts = Option()
>>> opts.set_headless()
>>> browser = Firefox(options=opts)
>>> browser.get('https://bandcamp.com')
>>> browser.find_element_by_class('playbutton').click()
0 vào phương thức ________ 51
>>> opts = Option()
>>> opts.set_headless()
>>> browser = Firefox(options=opts)
>>> browser.get('https://bandcamp.com')
>>> browser.find_element_by_class('playbutton').click()
2. Vì bạn muốn cho phép thời gian vượt qua trước khi nhập đối tượng
>>> opts = Option()
>>> opts.set_headless()
>>> browser = Firefox(options=opts)
>>> browser.get('https://bandcamp.com')
>>> browser.find_element_by_class('playbutton').click()
3 vào cơ sở dữ liệu, bạn quyết định sử dụng các công cụ luồng Python, để chạy một quy trình riêng để duy trì cơ sở dữ liệu trong nền.

Bạn sẽ cung cấp một phương thức

>>> opts = Option()
>>> opts.set_headless()
>>> browser = Firefox(options=opts)
>>> browser.get('https://bandcamp.com')
>>> browser.find_element_by_class('playbutton').click()
4 cho các trường hợp
>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
6 sẽ chạy trong một luồng riêng. Phương pháp mới sẽ định kỳ kiểm tra giá trị của
>>> opts = Option()
>>> opts.set_headless()
>>> browser = Firefox(options=opts)
>>> browser.get('https://bandcamp.com')
>>> browser.find_element_by_class('playbutton').click()
6 và thêm nó vào cơ sở dữ liệu nếu nó mới.

Bạn sẽ bắt đầu luồng khi lớp được khởi tạo bằng cách thêm một số mã vào

>>> opts = Option()
>>> opts.set_headless()
>>> browser = Firefox(options=opts)
>>> browser.get('https://bandcamp.com')
>>> browser.find_element_by_class('playbutton').click()
2:

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
4

Nếu bạn không bao giờ làm việc với lập trình đa luồng trong Python, bạn nên đọc về nó! Với mục đích hiện tại của bạn, bạn có thể nghĩ về chủ đề như một vòng lặp chạy trong nền của quy trình Python chính (cái bạn tương tác trực tiếp). Cứ sau hai mươi giây, vòng lặp kiểm tra một vài điều để xem liệu cơ sở dữ liệu có cần được cập nhật hay không, và nếu có, cộng đồng một bản ghi mới. Tuyệt đấy.

Bước cuối cùng là lưu cơ sở dữ liệu và khôi phục từ các trạng thái đã lưu. Sử dụng gói CSV, bạn có thể đảm bảo cơ sở dữ liệu của mình nằm ở định dạng di động cao và vẫn có thể sử dụng được ngay cả khi bạn từ bỏ lớp

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
6 tuyệt vời của mình!

Phương thức

>>> opts = Option()
>>> opts.set_headless()
>>> browser = Firefox(options=opts)
>>> browser.get('https://bandcamp.com')
>>> browser.find_element_by_class('playbutton').click()
2 sẽ được thay đổi một lần nữa, lần này để chấp nhận một đường dẫn tệp nơi bạn muốn lưu cơ sở dữ liệu. Bạn muốn tải cơ sở dữ liệu này nếu nó có sẵn và bạn muốn lưu nó định kỳ, bất cứ khi nào nó được cập nhật. Các bản cập nhật trông như thế này:

>>> from selenium.webdriver import Firefox
>>> from selenium.webdriver.firefox.options import Options
>>> opts = Options()
>>> opts.set_headless()
>>> assert opts.headless  # Operating in headless mode
>>> browser = Firefox(options=opts)
>>> browser.get('https://duckduckgo.com')
5

Voilà! Bạn có thể nghe nhạc và ghi lại những gì bạn nghe thấy! Kinh ngạc.

Một điều thú vị về điều trên là việc sử dụng

>>> tracks = browser.find_elements_by_class_name('discover-item')
>>> len(tracks)  # 8
>>> tracks[3].click()
0 thực sự bắt đầu được đền đáp. Khi chuyển đổi đến và từ định dạng CSV, bạn tận dụng thứ tự của các hàng trong tệp CSV để điền vào các hàng trong các đối tượng
>>> opts = Option()
>>> opts.set_headless()
>>> browser = Firefox(options=opts)
>>> browser.get('https://bandcamp.com')
>>> browser.find_element_by_class('playbutton').click()
3. Tương tự như vậy, bạn có thể tạo hàng tiêu đề của tệp CSV bằng cách tham chiếu thuộc tính
>>> tracks = browser.find_elements_by_class_name('discover-item')
>>> len(tracks)  # 8
>>> tracks[3].click()
2. Đây là một trong những lý do sử dụng một tuple kết thúc có ý nghĩa đối với dữ liệu cột.

Những gì tiếp theo và bạn đã học được gì?

Bạn có thể tải nhiều hơn nữa! Dưới đây là một vài ý tưởng nhanh chóng sẽ tận dụng siêu năng lực nhẹ là Python + selenium:

  • Bạn có thể mở rộng lớp
    >>> from selenium.webdriver import Firefox
    >>> from selenium.webdriver.firefox.options import Options
    >>> opts = Options()
    >>> opts.set_headless()
    >>> assert opts.headless  # Operating in headless mode
    >>> browser = Firefox(options=opts)
    >>> browser.get('https://duckduckgo.com')
    
    6 để điều hướng đến các trang album và chơi các bản nhạc bạn tìm thấy ở đó.
  • Bạn có thể quyết định tạo danh sách phát dựa trên các bản nhạc yêu thích hoặc thường xuyên nhất của bạn.
  • Có lẽ bạn muốn thêm một tính năng Autoplay.
  • Có thể bạn thích truy vấn các bài hát theo ngày hoặc tiêu đề hoặc nghệ sĩ và xây dựng danh sách phát theo cách đó.

Bạn đã học được rằng Python có thể làm mọi thứ mà trình duyệt web có thể làm và nhiều hơn một chút. Bạn có thể dễ dàng viết các tập lệnh để kiểm soát các phiên bản trình duyệt ảo chạy trong đám mây. Bạn có thể tạo các bot tương tác với người dùng thực hoặc điền vào các biểu mẫu! Đi ra ngoài và tự động hóa!

Làm thế nào để bạn tự động nhấp vào một nút trong Python?

Chúng tôi có thể nhấp vào một nút với selenium webdriver trong Python bằng phương thức Click. Đầu tiên, chúng tôi phải xác định nút để được nhấp với sự trợ giúp của bất kỳ trình định vị nào như ID, Tên, Lớp, XPath, TagName hoặc CSS. Sau đó, chúng tôi phải áp dụng phương thức nhấp vào nó. Một nút trong mã HTML được biểu thị bằng tên nút.using the click method. First, we have to identify the button to be clicked with the help of any locators like id, name, class, xpath, tagname or css. Then we have to apply the click method on it. A button in html code is represented by button tagname.

Chúng ta có thể làm tự động hóa web bằng Python không?

Bạn đã học được rằng Python có thể làm mọi thứ mà trình duyệt web có thể làm và nhiều hơn một chút. Bạn có thể dễ dàng viết các tập lệnh để kiểm soát các phiên bản trình duyệt ảo chạy trong đám mây. Bạn có thể tạo các bot tương tác với người dùng thực hoặc điền vào các biểu mẫu! Đi ra ngoài và tự động hóa!Python can do everything that a web browser can do, and a bit more. You could easily write scripts to control virtual browser instances that run in the cloud. You could create bots that interact with real users or mindlessly fill out forms! Go forth and automate!

Làm thế nào để bạn tự động hóa một trang web bằng Selenium Python?

Vì vậy, hãy xem nó hoạt động như thế nào:..
Mở trình duyệt ..
Tạo một thể hiện trình duyệt và sử dụng.Nhận chức năng để kết nối trang web ..
Tìm phần tử Đây có thể là bất cứ điều gì tìm hộp đầu vào hoặc nút và sử dụng hàm selenium như click (), send_keys (), v.v. để tương tác với phần tử ..
Đóng trình duyệt ..

Làm thế nào tôi có thể tự động hóa điền vào một biểu mẫu web?

Sử dụng máy ghi Katalon để điền vào mẫu tự động..
Bước 1: Lắp đặt máy ghi Katalon trên trình duyệt ưa thích của bạn (Chrome/Firefox/Edge) ....
Bước 2: Ghi lại luồng mong muốn.....
Bước 3: Chuẩn bị dữ liệu để tự động hóa biểu mẫu.....
Bước 4: Nhập tệp CSV và chạy ..