Quét web Selenium Python Firefox

Selenium là gói Python cho phép bạn điều khiển trình duyệt web thông qua Python. Trong hướng dẫn này (và các hướng dẫn sau), chúng ta sẽ kết nối với trình duyệt Google Chrome, Selenium cũng hoạt động với các trình duyệt khác

Trước tiên, bạn sẽ cần tải xuống Selenium, bạn có thể sử dụng các lệnh sau tùy thuộc vào bản phân phối Python của bạn

c:\> Pip install selenium

c. \> Conda cài đặt Selenium

Nếu bạn đang sử dụng máy tính làm việc hoặc đang xử lý VPN hạn chế, tùy chọn cài đặt ngoại tuyến có thể giúp ích cho bạn. Selenium_Install_Offline

Tiếp theo, bạn cần tải xuống trình điều khiển cho phép bạn quản lý Firefox thông qua Python

Bắt đầu bằng cách xác định phiên bản Firefox bạn có trên máy tính của mình

Nhấp vào ba đường kẻ ngang ở góc trên bên phải > Trợ giúp >Giới thiệu về Firefox

Quét web Selenium Python Firefox
Quét web Selenium Python Firefox

Tìm kiếm geckodriver để tải xuống tệp phù hợp với phiên bản Firefox của bạn. (lưu ý, đây là việc bạn sẽ cần làm mỗi khi Firefox được cập nhật, vì vậy hãy làm quen với nó. )

Quét web đã xuất hiện từ những ngày đầu của World Wide Web, nhưng việc quét các trang web hiện đại phụ thuộc nhiều vào công nghệ mới là điều không hề đơn giản. Trong bài viết này, Nhà phát triển phần mềm Toptal Neal Barnett trình bày cách bạn có thể sử dụng Python và Selenium để loại bỏ các trang web sử dụng nhiều JavaScript, iframe và chứng chỉ

Qua

Neal Barnett

Neal là một chuyên gia tư vấn và cơ sở dữ liệu cấp cao, người đã mang đến nhiều kiến ​​thức và kinh nghiệm hơn hai thập kỷ

CHIA SẺ

CHIA SẺ

Quét web đã được sử dụng để trích xuất dữ liệu từ các trang web gần như từ khi World Wide Web ra đời. Trong những ngày đầu, việc cạo chủ yếu được thực hiện trên các trang tĩnh – những trang có các phần tử, thẻ và dữ liệu đã biết

Tuy nhiên, gần đây, các công nghệ tiên tiến trong phát triển web đã khiến nhiệm vụ trở nên khó khăn hơn một chút. Trong bài viết này, chúng ta sẽ khám phá cách chúng ta có thể tiến hành thu thập dữ liệu trong trường hợp công nghệ mới và các yếu tố khác ngăn cản việc thu thập dữ liệu tiêu chuẩn

Cạo dữ liệu truyền thống

Vì hầu hết các trang web tạo ra các trang dành cho con người có thể đọc được thay vì đọc tự động, nên việc quét web chủ yếu bao gồm việc tiêu hóa dữ liệu đánh dấu của trang web theo chương trình (nghĩ rằng nhấp chuột phải, Xem nguồn), sau đó phát hiện các mẫu tĩnh trong dữ liệu đó sẽ cho phép chương trình

Data Scraping

Nếu dữ liệu báo cáo được tìm thấy, thông thường, dữ liệu sẽ có thể truy cập được bằng cách chuyển các biến biểu mẫu hoặc tham số bằng URL. Ví dụ

https://www.myreportdata.com?month=12&year=2004&clientid=24823

Python đã trở thành một trong những ngôn ngữ quét web phổ biến nhất một phần nhờ vào các thư viện web khác nhau đã được tạo cho nó. Một thư viện phổ biến, Beautiful Soup, được thiết kế để lấy dữ liệu ra khỏi các tệp HTML và XML bằng cách cho phép tìm kiếm, điều hướng và sửa đổi các thẻ (ví dụ:. e. , cây phân tích)

Cạo dựa trên trình duyệt

Gần đây, tôi có một dự án cạo có vẻ khá đơn giản và tôi đã chuẩn bị đầy đủ để sử dụng cách cạo truyền thống để xử lý nó. Nhưng khi tôi đi sâu hơn vào nó, tôi thấy những trở ngại không thể vượt qua bằng các phương pháp truyền thống

Ba vấn đề chính khiến tôi không thể thực hiện các phương pháp cạo tiêu chuẩn của mình

  1. Giấy chứng nhận. Có một chứng chỉ bắt buộc phải được cài đặt để truy cập vào phần của trang web chứa dữ liệu. Khi truy cập trang ban đầu, một dấu nhắc xuất hiện yêu cầu tôi chọn chứng chỉ thích hợp của những chứng chỉ được cài đặt trên máy tính của tôi và nhấp vào OK
  2. iframe. Trang web đã sử dụng iframe, điều này làm hỏng quá trình cạo bình thường của tôi. Có, tôi có thể cố gắng tìm tất cả các URL iframe, sau đó tạo sơ đồ trang web, nhưng có vẻ như điều đó có thể trở nên khó sử dụng
  3. JavaScript. Dữ liệu được truy cập sau khi điền vào biểu mẫu có tham số (e. g. , ID khách hàng, phạm vi ngày, v.v. ). Thông thường, tôi sẽ bỏ qua biểu mẫu và chỉ cần chuyển các biến biểu mẫu (thông qua URL hoặc dưới dạng biến biểu mẫu ẩn) đến trang kết quả và xem kết quả. Nhưng trong trường hợp này, biểu mẫu chứa JavaScript, không cho phép tôi truy cập các biến biểu mẫu theo cách thông thường

Vì vậy, tôi quyết định từ bỏ các phương pháp truyền thống của mình và xem xét một công cụ khả thi để quét dựa trên trình duyệt. Điều này sẽ hoạt động khác với bình thường – thay vì truy cập trực tiếp vào một trang, tải xuống cây phân tích cú pháp và lấy ra các phần tử dữ liệu, thay vào đó, tôi sẽ “hành động như một con người” và sử dụng trình duyệt để truy cập trang tôi cần, sau đó cạo

selen

Nói chung, Selenium nổi tiếng là một khung thử nghiệm nguồn mở cho các ứng dụng web – cho phép các chuyên gia QA thực hiện các thử nghiệm tự động, thực hiện phát lại và triển khai chức năng điều khiển từ xa (cho phép nhiều phiên bản trình duyệt thử tải và nhiều loại trình duyệt). Trong trường hợp của tôi, điều này có vẻ như nó có thể hữu ích

Ngôn ngữ sử dụng của tôi để quét web là Python, vì nó có các thư viện được tích hợp tốt, thường có thể xử lý tất cả các chức năng cần thiết. Và chắc chắn, một thư viện Selenium tồn tại cho Python. Điều này sẽ cho phép tôi khởi tạo một “trình duyệt” – Chrome, Firefox, IE, v.v. – sau đó giả vờ như tôi đang sử dụng trình duyệt để truy cập vào dữ liệu mà tôi đang tìm kiếm. Và nếu tôi không muốn trình duyệt thực sự xuất hiện, tôi có thể tạo trình duyệt ở chế độ “không đầu”, làm cho nó ẩn với bất kỳ người dùng nào

Thiết lập dự án

Để bắt đầu thử nghiệm, tôi cần thiết lập dự án của mình và nhận mọi thứ tôi cần. Tôi đã sử dụng máy Windows 10 và đảm bảo rằng tôi đã có phiên bản Python được cập nhật tương đối (đó là phiên bản v. 3. 7. 3). Tôi đã tạo một tập lệnh Python trống, sau đó tải các thư viện mà tôi cho là cần thiết, sử dụng PIP (trình cài đặt gói cho Python) nếu tôi chưa tải thư viện. Đây là những thư viện chính tôi đã bắt đầu với

  1. Yêu cầu (để thực hiện yêu cầu HTTP)
  2. URLLib3 (xử lý URL)
  3. Beautiful Soup (trong trường hợp Selenium không thể xử lý mọi thứ)
  4. Selenium (để điều hướng dựa trên trình duyệt)

Tôi cũng đã thêm một số tham số gọi vào tập lệnh (sử dụng thư viện argparse) để tôi có thể thử với các bộ dữ liệu khác nhau, gọi tập lệnh từ dòng lệnh với các tùy chọn khác nhau. Những người bao gồm ID khách hàng, từ tháng/năm và đến tháng/năm

Vấn đề 1 – Giấy chứng nhận

Lựa chọn đầu tiên tôi cần thực hiện là tôi sẽ bảo Selenium sử dụng trình duyệt nào. Vì tôi thường sử dụng Chrome và Chrome được xây dựng dựa trên dự án Chromium nguồn mở (cũng được sử dụng bởi các trình duyệt Edge, Opera và Amazon Silk), tôi nghĩ rằng mình sẽ thử điều đó trước.

Tôi đã có thể khởi động Chrome trong tập lệnh bằng cách thêm các thành phần thư viện mà tôi cần, sau đó đưa ra một vài lệnh đơn giản

# Load selenium components
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

# Establish chrome driver and go to report site URL
url = "https://reportdata.mytestsite.com/transactionSearch.jsp"
driver = webdriver.Chrome()
driver.get(url)

Vì tôi không khởi chạy trình duyệt ở chế độ headless nên trình duyệt đã thực sự xuất hiện và tôi có thể thấy nó đang làm gì. Nó ngay lập tức yêu cầu tôi chọn một chứng chỉ (mà tôi đã cài đặt trước đó)

Vấn đề đầu tiên cần giải quyết là chứng chỉ. Làm thế nào để chọn đúng và chấp nhận nó để vào trang web?

Data Scraping

Điều này không tốt. Tôi không muốn nhấp vào nút OK theo cách thủ công mỗi khi tôi chạy tập lệnh của mình

Hóa ra, tôi đã có thể tìm ra cách giải quyết cho vấn đề này - mà không cần lập trình. Mặc dù tôi đã hy vọng rằng Chrome có khả năng chuyển tên chứng chỉ khi khởi động nhưng tính năng đó không tồn tại. Tuy nhiên, Chrome có khả năng tự động chọn chứng chỉ nếu một mục nhất định tồn tại trong sổ đăng ký Windows của bạn. Bạn có thể đặt nó để chọn chứng chỉ đầu tiên mà nó nhìn thấy hoặc nếu không thì cụ thể hơn. Vì tôi chỉ tải một chứng chỉ nên tôi đã sử dụng định dạng chung

Data Scraping

Do đó, với bộ đó, khi tôi yêu cầu Selenium khởi chạy Chrome và lời nhắc chứng chỉ xuất hiện, Chrome sẽ “Tự động chọn” chứng chỉ và tiếp tục

Vấn đề 2 – Iframe

Được rồi, bây giờ tôi đang ở trong trang web và một biểu mẫu xuất hiện, nhắc tôi nhập ID khách hàng và phạm vi ngày của báo cáo

Data Scraping

Bằng cách kiểm tra biểu mẫu trong công cụ dành cho nhà phát triển (F12), tôi nhận thấy rằng biểu mẫu được trình bày trong iframe. Vì vậy, trước khi tôi có thể bắt đầu điền vào biểu mẫu, tôi cần phải “chuyển” sang iframe thích hợp nơi biểu mẫu tồn tại. Để làm điều này, tôi đã gọi tính năng chuyển đổi của Selenium, như vậy

# Switch to iframe where form is
frame_ref = driver.find_elements_by_tag_name("iframe")[0]
iframe = driver.switch_to.frame(frame_ref)

Tốt, vì vậy bây giờ trong khung bên phải, tôi đã có thể xác định các thành phần, điền vào trường ID khách hàng và chọn menu thả xuống ngày

# Find the Customer ID field and populate it
element = driver.find_element_by_name("custId")
element.send_keys(custId)  # send a test id

# Find and select the date drop-downs
select = Select(driver.find_element_by_name("fromMonth"))
select.select_by_visible_text(from_month)
select = Select(driver.find_element_by_name("fromYear"))
select.select_by_visible_text(from_year)
select = Select(driver.find_element_by_name("toMonth"))
select.select_by_visible_text(to_month)
select = Select(driver.find_element_by_name("toYear"))
select.select_by_visible_text(to_year)

Vấn đề 3 – JavaScript

Điều duy nhất còn lại trên biểu mẫu là “nhấp” vào nút Tìm để nó bắt đầu tìm kiếm. Điều này hơi phức tạp vì nút Tìm dường như được điều khiển bởi JavaScript và không phải là nút loại “Gửi” thông thường. Kiểm tra nó trong các công cụ dành cho nhà phát triển, tôi tìm thấy hình ảnh nút và có thể lấy XPath của nó bằng cách nhấp chuột phải

Data Scraping

Sau đó, được trang bị thông tin này, tôi tìm thấy phần tử trên trang, sau đó nhấp vào phần tử đó

# Find the ‘Find’ button, then click it
driver.find_element_by_xpath("/html/body/table/tbody/tr[2]/td[1]/table[3]/tbody/tr[2]/td[2]/input").click()

Và voilà, biểu mẫu đã được gửi và dữ liệu xuất hiện. Bây giờ, tôi có thể cạo tất cả dữ liệu trên trang kết quả và lưu nó theo yêu cầu. Hay tôi có thể?

Lấy dữ liệu

Đầu tiên, tôi phải xử lý trường hợp tìm kiếm không thấy gì. Điều đó khá đơn giản. Nó sẽ hiển thị một thông báo trên biểu mẫu tìm kiếm mà không cần rời khỏi nó, đại loại như “Không tìm thấy bản ghi nào. ” Tôi chỉ đơn giản là tìm kiếm chuỗi đó và dừng ngay tại đó nếu tôi tìm thấy nó

Nhưng nếu có kết quả, dữ liệu được trình bày ở dạng div có dấu cộng (+) để mở một giao dịch và hiển thị tất cả chi tiết của nó. Một giao dịch đã mở hiển thị dấu trừ (-), khi được nhấp vào sẽ đóng div. Nhấp vào dấu cộng sẽ gọi một URL để mở div của nó và đóng bất kỳ cái nào đang mở

Data Scraping

Do đó, cần phải tìm bất kỳ dấu cộng nào trên trang, thu thập URL bên cạnh từng dấu cộng, sau đó lặp qua từng dấu cộng để lấy tất cả dữ liệu cho mọi giao dịch

# Loop through transactions and count
links = driver.find_elements_by_tag_name('a')
link_urls = [link.get_attribute('href') for link in links]
thisCount = 0
isFirst = 1
for url in link_urls:
if (url.find("GetXas.do?processId") >= 0):  # URL to link to transactions
       	if isFirst == 1:  # already expanded +
              	isFirst = 0
else:
       	driver.get(url)  # collapsed +, so expand
# Find closest element to URL element with correct class to get tran type                            tran_type=driver.find_element_by_xpath("//*[contains(@href,'/retail/transaction/results/GetXas.do?processId=-1')]/following::td[@class='txt_75b_lmnw_T1R10B1']").text
              # Get transaction status
              status = driver.find_element_by_class_name('txt_70b_lmnw_t1r10b1').text
              # Add to count if transaction found
              if (tran_type in ['Move In','Move Out','Switch']) and 
(status == "Complete"):
                    thisCount += 1

Trong đoạn mã trên, các trường tôi đã truy xuất là loại giao dịch và trạng thái, sau đó được thêm vào số lượng để xác định có bao nhiêu giao dịch phù hợp với các quy tắc đã được chỉ định. Tuy nhiên, tôi có thể đã truy xuất các trường khác trong chi tiết giao dịch, như ngày và giờ, loại phụ, v.v.

Đối với dự án này, số lượng đã được trả lại cho một ứng dụng gọi điện. Tuy nhiên, nó và các dữ liệu được loại bỏ khác cũng có thể được lưu trữ trong một tệp phẳng hoặc cơ sở dữ liệu

Các rào cản và giải pháp có thể bổ sung

Nhiều trở ngại khác có thể xuất hiện khi quét các trang web hiện đại bằng phiên bản trình duyệt của riêng bạn, nhưng hầu hết đều có thể được giải quyết. Ở đây có một ít

  • Cố gắng tìm một cái gì đó trước khi nó xuất hiện

    Trong khi duyệt web, bạn có thường thấy rằng mình đang đợi một trang hiện ra, đôi khi trong nhiều giây không? . Bạn tìm kiếm một lớp hoặc phần tử khác – và nó không có ở đó

    May mắn thay, Selenium có khả năng đợi cho đến khi nó nhìn thấy một phần tử nhất định và có thể hết thời gian chờ nếu phần tử đó không xuất hiện, như vậy

element = WebDriverWait(driver, 10). until(EC.presence_of_element_located((By.ID, "theFirstLabel"))) 


  • Vượt qua một Captcha

    Một số trang web sử dụng Captcha hoặc tương tự để ngăn chặn các rô-bốt không mong muốn (mà chúng có thể coi là bạn). Điều này có thể gây cản trở cho việc quét web và làm chậm quá trình này

Đối với những lời nhắc đơn giản (như “2 + 3 bằng mấy?”), những lời nhắc này thường có thể được đọc và tìm ra một cách dễ dàng. Tuy nhiên, đối với những rào cản nâng cao hơn, có những thư viện có thể giúp cố gắng bẻ khóa nó. Một số ví dụ là 2Captcha, Death by Captcha và Bypass Captcha

  • Thay đổi cấu trúc trang web

    Các trang web có nghĩa là thay đổi – và chúng thường làm như vậy. Đó là lý do tại sao khi viết một kịch bản cạo, tốt nhất bạn nên ghi nhớ điều này. Bạn sẽ muốn nghĩ xem bạn sẽ sử dụng phương pháp nào để tìm dữ liệu và phương pháp nào không sử dụng. Xem xét các kỹ thuật đối sánh một phần, thay vì cố gắng đối sánh toàn bộ cụm từ. Ví dụ: một trang web có thể thay đổi thông báo từ “Không tìm thấy bản ghi nào” thành “Không tìm thấy bản ghi nào” – nhưng nếu đối sánh của bạn là “Không có bản ghi”, thì bạn sẽ ổn thôi. Ngoài ra, hãy cân nhắc xem có khớp trên XPATH, ID, tên, văn bản liên kết, thẻ hoặc tên lớp hay bộ chọn CSS hay không – và điều nào ít có khả năng thay đổi nhất

Tóm lược. Python và Selenium

Đây là một minh chứng ngắn gọn cho thấy rằng hầu hết mọi trang web đều có thể bị cạo, bất kể công nghệ nào được sử dụng và mức độ phức tạp có liên quan. Về cơ bản, nếu bạn có thể tự duyệt trang web, nó thường có thể được loại bỏ

Bây giờ, như một lời cảnh báo, điều đó không có nghĩa là mọi trang web đều phải được loại bỏ. Một số có những hạn chế hợp pháp tại chỗ và đã có nhiều vụ kiện ra tòa quyết định tính hợp pháp của việc cạo một số trang web. Mặt khác, một số trang web hoan nghênh và khuyến khích truy xuất dữ liệu từ trang web của họ và trong một số trường hợp, cung cấp API để giúp mọi việc dễ dàng hơn

Dù bằng cách nào, tốt nhất bạn nên kiểm tra các điều khoản và điều kiện trước khi bắt đầu bất kỳ dự án nào. Nhưng nếu bạn tiếp tục, hãy yên tâm rằng bạn có thể hoàn thành công việc

Tài nguyên được đề xuất cho việc quét web phức tạp

  • Quét web Python nâng cao. Thực tiễn tốt nhất & giải pháp thay thế
  • Tự cạo có thể mở rộng. Cách xây dựng và vận hành máy cạo trên quy mô lớn

Hiểu những điều cơ bản

Tại sao Python được sử dụng để quét web?

Python đã trở thành ngôn ngữ phổ biến nhất để quét web vì một số lý do. Chúng bao gồm tính linh hoạt, dễ mã hóa, gõ động, bộ thư viện lớn để thao tác dữ liệu và hỗ trợ cho các công cụ cạo phổ biến nhất, chẳng hạn như Scrapy, Beautiful Soup và Selenium

Có hợp pháp để cạo một trang web?

Quét web không phải là bất hợp pháp. Hầu hết dữ liệu trên các trang web là dành cho tiêu dùng công cộng. Tuy nhiên, một số trang web có các điều khoản và điều kiện rõ ràng cấm tải xuống dữ liệu. Điều an toàn cần làm là xem xét các hạn chế được đăng bởi bất kỳ trang web cụ thể nào và nhận thức được tài sản trí tuệ của người khác

Sự khác biệt giữa Súp đẹp và Selenium là gì?

Beautiful Soup là một thư viện Python được xây dựng đặc biệt để lấy dữ liệu ra khỏi tệp HTML hoặc XML. Mặt khác, Selenium là một framework để thử nghiệm các ứng dụng web. Nó cho phép khởi tạo một phiên bản trình duyệt bằng trình điều khiển, sau đó sử dụng các lệnh để điều hướng trình duyệt theo cách thủ công

Trình duyệt không đầu là gì?

Trình duyệt không đầu về cơ bản là trình duyệt không có giao diện người dùng có thể được tạo theo chương trình. Các lệnh có thể được đưa ra để điều hướng trình duyệt, nhưng không thể nhìn thấy gì khi trình duyệt đang tồn tại

XPATH là gì?

XPATH (Ngôn ngữ đường dẫn XML) là một cú pháp cụ thể có thể được sử dụng để điều hướng qua các tệp HTML hoặc XML bằng cách xác định và điều hướng các nút. Nó dựa trên một biểu diễn cây của tài liệu. Đây là một ví dụ về XPATH biểu thị tên của sản phẩm đầu tiên trong phần tử sản phẩm. /products/product[1]/tên

Thẻ

TrănSeleniumCạo

Người làm việc tự do? Tìm công việc tiếp theo của bạn.

Việc làm Lập trình viên Python

Xem thông tin đầy đủ

Neal Barnett

Người phát triển phần mềm

Giới thiệu về tác giả

Neal là một nhà tư vấn cấp cao, chuyên gia cơ sở dữ liệu và quản lý dự án kỹ thuật (được chứng nhận PMP), người đã mang đến nhiều kiến ​​thức và hơn hai thập kỷ kinh nghiệm. Anh ấy thành thạo về phát triển ứng dụng Agile, trang web và SaaS, Cloud, DBA và các khía cạnh kỹ thuật khác. Neal đã đóng vai trò là CIO tại các công ty mới thành lập và đã chạm vào mọi khía cạnh của Cơ sở hạ tầng CNTT

Thuê Neal

Bình luận

Ruben Dario Carvajal Herrera

Điều đó thật tuyệt

Brian chéo

Bài báo tuyệt vời. Puppeteer là một trình duyệt không đầu khác hoạt động tốt cho loại điều này

Neal Barnett

Cảm ơn Brian. Vâng, Puppeteer là một lựa chọn tuyệt vời khác. Có một số so sánh trên web giữa hai

Ashutosh Dubey

Blog tuyệt vời Neal. Tôi đã gặp khó khăn với dự án dựa trên Python quét web cá nhân của mình do các công cụ I-frame và JavaScript trong khi sử dụng Beautiful Soup. Tôi chắc chắn sẽ thử phương pháp mà bạn đã giải thích

Neal Barnett

@ashutosh01234. disqus - Cảm ơn. Beautiful Soup là một thư viện tuyệt vời và tôi nghĩ nó có thể làm mọi thứ. Nhưng than ôi, nó có giới hạn của nó

Kavitha Ganapa

Bài báo tuyệt vời @neal_barnett. disqus

Đaniyah Shahrokhian

Bài báo tuyệt vời Neal. Tôi yêu những blog này vì chúng đi thẳng vào vấn đề và được viết tốt hơn nhiều so với những blog bạn có thể tìm thấy trên Medium

Neal Barnett

Cảm ơn Daniyal - vâng, Phương tiện có thể trúng hoặc trượt. Toptal có các hướng dẫn và chỉnh sửa khá nghiêm ngặt để giúp chúng tôi đi đúng hướng. )

Alex , Công ty Data e-Scraper

Ngoài ra, đối với những người dùng không biết cách xử lý dự án cạo thông qua Python, dịch vụ eScraper là một giải pháp thay thế tốt trong việc quét web Thương mại điện tử

Làm cách nào để sử dụng Selenium Python với Firefox?

Để Firefox hoạt động với Selenium của Python, bạn cần phải cài đặt trình điều khiển tắc kè . Trình điều khiển tắc kè sẽ khởi động trình duyệt firefox thực sự và hỗ trợ Javascript. Hãy xem mã firefox selen. Đầu tiên nhập webdriver, sau đó khởi động firefox.

Tôi có thể sử dụng Selenium với Firefox không?

Selenium IDE là môi trường phát triển tích hợp cho các thử nghiệm Selenium. Nó được triển khai dưới dạng tiện ích mở rộng của Firefox và cho phép bạn ghi lại, chỉnh sửa và gỡ lỗi các bài kiểm tra.

Làm cách nào để sử dụng Selenium trong Python để quét web?

Lọc web bằng Selenium và Python .
Cài đặt
Bắt đầu nhanh. Chế độ không đầu của Chrome. Thuộc tính trang WebDriver
yếu tố định vị. Các phương thức find_element. Phần tử Web Selenium. .
Chụp ảnh màn hình
Chờ đợi một yếu tố có mặt
Thực thi JavaScript
Sử dụng proxy với Selenium Wire
Chặn hình ảnh và JavaScript

Làm cách nào để đặt đường dẫn Firefox trong Selenium Webdriver Python?

Để đặt đường dẫn tùy chỉnh tới Firefox, bạn cần sử dụng FirefoxBinary. .
từ selen. webdriver. firefox. firefox_binary nhập FirefoxBinary
nhị phân = FirefoxBinary('F. \FirefoxPortable\Firefox. exe')
trình điều khiển = webdriver. Firefox(firefox_binary=nhị phân)