Cách tự động tải xuống tệp từ trang web bằng python

Trong nhiều dự án khoa học dữ liệu, bạn có thể cần tải xuống dữ liệu từ xa, chẳng hạn như hình ảnh, tệp CSV hoặc dữ liệu nén. Python làm cho việc tải xuống các tệp trong mã của bạn trở nên khá đơn giản, cho phép bạn tự động hóa các quy trình mà bạn có thể phải thực hiện thủ công hoặc thông qua tập lệnh Bash. Đây là cách nó được thực hiện

Đang tải xuống một tệp

Để tải xuống một tệp bằng Python, hãy nhập gói request từ urllib và xác định URL bạn muốn tải xuống. Sau đó, chuyển url cho hàm

('image.jpg', )
0 cùng với tên bạn muốn gán cho tệp đã tải xuống

import urllib.request

url = 'https://practicaldatascience.co.uk/assets/images/posts/happy.jpg'
urllib.request.urlretrieve(url, 'image.jpg')

('image.jpg', )

Tải xuống tệp và giữ nguyên tên tệp

Nếu bạn muốn giữ nguyên tên tệp của tệp bạn đang tải xuống, thay vì đặt tên đó một cách rõ ràng trong mã của mình, trước tiên bạn có thể sử dụng

('image.jpg', )
1 để yêu cầu tệp, sau đó sử dụng
('image.jpg', )
2 để lấy tên tệp từ đối tượng url trong phản hồi được trả về. Cuối cùng, bạn có thể chuyển tên tệp cho hàm
('image.jpg', )
0 và tệp của bạn sẽ được tải xuống bằng tên tệp ban đầu của nó

import urllib.request
from os.path import basename

url = 'https://practicaldatascience.co.uk/assets/images/posts/happy.jpg'
response = urllib.request.urlopen(url)

filename = basename(response.url)

urllib.request.urlretrieve(url, filename)

('happy.jpg', )

Đang tải xuống nhiều tệp

Nếu bạn có nhiều tệp để tải xuống, bạn chỉ cần sửa đổi mã ở trên và tạo vòng lặp for để yêu cầu và tải xuống từng tệp riêng lẻ. Trước tiên, hãy xác định danh sách các URL bạn muốn tải xuống, sau đó tạo vòng lặp for để lặp qua các URL. Sau đó, yêu cầu tệp, lấy tên tệp và chuyển URL và tên tệp tới

('image.jpg', )
0

là một công cụ mã nguồn mở giúp tự động hóa các trình duyệt web. Nó cung cấp một giao diện duy nhất cho phép người kiểm tra tự động hóa hành động của người dùng bằng nhiều ngôn ngữ lập trình như Ruby, Java, NodeJS, PHP, Perl, Python và C#, trong số những ngôn ngữ khác.  

Với Selenium, người thử nghiệm có thể tự động hóa nhiều hành động như nhấp chuột, nhập, di chuột, upload files, download files – the list is quite exhaustive. 

Một trong những tình huống phổ biến nhất đối với người dùng internet là tải tệp xuống từ các trang web. Mặc dù Selenium không hỗ trợ chức năng này một cách tự nhiên, nhưng tđây là một cách dễ dàng để sử dụng Selenium để tải xuống tệp.

Vì vậy, đối với người dùng tìm kiếm "tệp tải xuống selenium" trên Google, bài viết này khám phá tình huống chính xác đó bằng hướng dẫn từng bước

Hãy xem xét tình huống sau.

Có một . csv nằm ở cuối trang “Kiểm tra trên thiết bị di động phù hợp”, mục đích là để tải xuống tệp .

Cách tự động tải xuống tệp từ trang web bằng python

điều kiện tiên quyết

  • Người dùng cần thiết lập cơ bản Selenium và Python trong hệ thống của họ.

Bây giờ, hãy thảo luận về cách tải xuống tệp bằng Selenium và Python .

Thách thức ở đây là quá trình tải xuống hoặc cách tiếp cận khác nhau trong các trình duyệt khác nhau – chẳng hạn như Firefox và Chrome. Vì vậy, nếu người kiểm tra đang sử dụng Selenium Webdriver để tải xuống các tệp, họ cần có cấu hình riêng cho từng trình duyệt

 Hướng dẫn này sẽ giải thích hai cách tiếp cận. Với nó, người kiểm tra có thể sử dụng Selenium để tải tệp xuống các thư mục cụ thể trong .

Tải tệp xuống một thư mục cụ thể trong trình duyệt Chrome bằng Selenium

Bước 1. Nhập các gói cần thiết vào tập lệnh kiểm tra Python


from selenium import webdriver
import time

Đoạn mã trên nhập hai gói

  • trình điều khiển web. Giúp thực hiện các hành động dành riêng cho trình duyệt như điều hướng, nhấp chuột, v.v.
  • thời gian. Giúp tạm dừng tập lệnh tại thời điểm mong muốn.

Bước 2. Đặt tùy chọn Chrome

options = webdriver.ChromeOptions() ;
prefs = {"download.default_directory" : "<directory_path>;
#example: prefs = {"download.default_directory" : "C:\Tutorial\down"};
options.add_experimental_option("prefs",prefs);

Giải thích mã

  • tùy chọn.   Giúp đặt tùy chọn cho trình duyệt Chrome.
  • tải xuống. default_directory. Được sử dụng để thay đổi thư mục tải xuống mặc định. Thí dụ. Mã xác định C. \Tutorial\down, nghĩa là tệp sẽ được tải xuống vị trí đó.
  • add_experimental_option. Cho phép người dùng thêm các tùy chọn này vào đối tượng trình điều khiển web Selenium của họ.

Bước 3. Tạo đối tượng trình điều khiển chrome với các tùy chọn

driver = webdriver.Chrome(executable_path='./chromedriver',chrome_options=options);

Giải thích mã

  • trình điều khiển.   Tạo đối tượng Selenium chromedriver với các tùy chọn nêu trên.

Ghi chú. executable_path phải là đường dẫn tương đối nơi đặt chromedriver. Trong trường hợp này, nó là thư mục gốc nên nó được gọi là. / chromedriver

Bước 4. Tạo một tập lệnh để điều hướng đến trang web và nhấp vào tải xuống. csv

Các bước trên đã đặt tùy chọn và nhập tất cả các gói cần thiết. Tiếp theo, người kiểm tra phải viết kịch bản để điều hướng trang web và nhấp vào tùy chọn tải xuống tệp

from selenium import webdriver

import time

try:

    driver.get('https://www.browserstack.com/test-on-the-right-mobile-devices');

    gotitdriver.find_element_by_id('accept-cookie-notification');

    gotit.click();

        downloadcsvdriver.find_element_by_css_selector('.icon-csv');

    downloadcsv.click();

    time.sleep(5)    

    driver.close()

except:

     print("Invalid URL")


Giải thích mã

  • trình điều khiển. được. Điều hướng đến URL chứa tệp có liên quan

Ngay khi Selenium điều hướng đến trang web, họ sẽ yêu cầu chấp nhận cookie, việc này phải được thực hiện trước tiên để tải tệp xuống.

  • được. nhấp chuột(). nhấp để chấp nhận cookie.
  • downloadcsv. biến giữ bộ định vị cho. tệp csv.
  • downloadcsv. nhấp chuột(). Khi thực hiện hành động này, Selenium sẽ tải tệp xuống thư mục cụ thể được đề cập trong Bước 2.  

Bước 5. Chạy thử nghiệm

Khi kết hợp từ bước 1 đến bước 4, mã trông như dưới đây. Khi thực thi tập lệnh này, người kiểm tra sẽ có thể tự động tải xuống tệp bằng Selenium và Python

from selenium import webdriver

import time

options = webdriver.ChromeOptions() ;

prefs = {"download.default_directory" : "C:\Tutorial\down"};

options.add_experimental_option("prefs",prefs);

driver = webdriver.Chrome(executable_path='./chromedriver',chrome_options=options);

try:

    driver.get('https://www.browserstack.com/test-on-the-right-mobile-devices');

    downloadcsvdriver.find_element_by_css_selector('.icon-csv');

    gotitdriver.find_element_by_id('accept-cookie-notification');

    gotit.click();    

    downloadcsv.click();

    time.sleep(5)

    driver.close()

except:

     print("Invalid URL")

Sau khi thực thi tập lệnh, tệp sẽ được tải xuống vị trí mong muốn

Cách tự động tải xuống tệp từ trang web bằng python

Bây giờ, bạn có thể điều hướng đến thư mục được đề cập trong Bước 2 và tải tệp Selenium đã tải xuống.

Cách tự động tải xuống tệp từ trang web bằng python

Dùng thử Kiểm tra Selenium miễn phí

Tải tệp xuống một thư mục cụ thể trong trình duyệt Firefox bằng Selenium

Bước 1. Nhập các gói cần thiết

Bước này vẫn giống nhau cho cả Chrome và Firefox. Nhập các gói cần thiết vào tập lệnh kiểm tra

from selenium import webdriver
import time

Bước 2. Tạo hồ sơ Firefox

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList"2)
profile.set_preference("browser.download.manager.showWhenStarting"False)
profile.set_preference("browser.download.dir""<path_to_downlaod_directory>")
#Example:profile.set_preference("browser.download.dir", "C:\Tutorial\down")
profile.set_preference("browser.helperApps.neverAsk.saveToDisk""application/octet-stream")

Giải thích mã

  • hồ sơ. Đối tượng hồ sơ dành riêng cho FirefoxDriver chứa tất cả các tùy chọn được đặt.
  • trình duyệt. Tải xuống. danh sách thư mục . Đặt tùy chọn này sẽ cho Trình quản trị web Selenium không sử dụng thư mục mặc định để tải xuống tệp.
  • trình duyệt. Tải xuống. giám đốc. hiển thịKhi bắt đầu. Đặt tùy chọn này sẽ tắt hiển thị tiến trình tải xuống.
  • trình duyệt. Tải xuống. thư mục. Việc đặt tùy chọn này sẽ khiến Selenium tải tệp xuống một thư mục cụ thể (ví dụ:. C. \Hướng dẫn\xuống).
  • trình duyệt. ứng dụng trợ giúp. không bao giờ hỏi. saveToDisk . Yêu cầu Firefox tự động tải xuống các tệp của loại mime đã chọn. Trong trường hợp này, application/octet-stream của nó.

Ghi chú. Nếu người kiểm tra không chắc chắn về cách tìm loại mime phải được chỉ định trong tùy chọn, hãy cuộn đến phần “Cách tìm loại MIME để chỉ định khi tải xuống tệp bằng Selenium WebDriver trong Firefox” ở phần sau của bài viết này

Bước 3. Tạo đối tượng trình điều khiển Firefox với tất cả các tùy chọn

driver = webdriver.Firefox(firefox_profile=profile,executable_path='.\geckodriver')

Đoạn mã trên chuyển hai tham số là. firefox_profile đường dẫn thực thi .

  • firefox_profile. Đặt cấu hình được xác định trong các bước trên.
  • đường dẫn thực thi. Giá trị này phải trỏ đến tệp nhị phân firefoxdriver, nếu tệp nhị phân nằm trong thư mục gốc . \geckodriver .

Bước 4. Viết đoạn mã để điều hướng đến trang web và tải xuống tệp

try:

    driver.get('https://www.browserstack.com/test-on-the-right-mobile-devices');

    gotitdriver.find_element_by_id('accept-cookie-notification');

    gotit.click();

    downloadcsvdriver.find_element_by_css_selector('.icon-csv');

    downloadcsv.click();

    time.sleep(5);

    driver.quit();

except:

    print ("Invalid URL")

Đoạn mã này vẫn giữ nguyên cho cả Chrome và Firefox

Bước 5. thực hiện kịch bản

Khi kết hợp từ bước 1 đến bước 3, mã trông như dưới đây. Khi thực thi tập lệnh này, người kiểm tra sẽ có thể tự động tải xuống tệp bằng Selenium và Python

from selenium import webdriver

import time

profile = webdriver.FirefoxProfile()

profile.set_preference("browser.download.folderList"2)

profile.set_preference("browser.download.manager.showWhenStarting"False)

profile.set_preference("browser.download.dir""<path_to_downlaod_directory>")

#Example:profile.set_preference("browser.download.dir", "C:\Tutorial\down")

profile.set_preference("browser.helperApps.neverAsk.saveToDisk""application/octet-stream")

driver = webdriver.Firefox(firefox_profile=profile,executable_path='.\geckodriver')

try:

    driver.get('https://www.browserstack.com/test-on-the-right-mobile-devices');

    gotitdriver.find_element_by_id('accept-cookie-notification');

    gotit.click();

    downloadcsvdriver.find_element_by_css_selector('.icon-csv');

    downloadcsv.click();

    time.sleep(5)

    driver.quit();

except:

    print ("Invalid URL")

Sau khi thực thi tập lệnh, Firefox sẽ tải xuống tệp

Cách tự động tải xuống tệp từ trang web bằng python

Điều hướng đến thư mục được chỉ định trong Bước 2 để lấy tệp đã tải xuống Selenium

Cách tự động tải xuống tệp từ trang web bằng python

Cách tìm loại MIME để chỉ định khi tải xuống tệp bằng Selenium WebDriver trong Firefox

Trong tùy chọn Firefox, người ta phải chỉ định loại MIME. Tuy nhiên, hầu hết thời gian, người kiểm tra không chắc chắn nên chỉ định loại MIME nào. May mắn thay, có một giải pháp.  

Hãy xem xét ví dụ được mô tả ở trên. Để tìm loại MIME, hãy làm như sau

  1. Mở trình duyệt Firefox. Điều hướng đến URL https. //www. ngăn xếp trình duyệt. com/test-on-the-right-mobile-devices
  2. Điều hướng đến. Nút tải xuống CSV và sao chép liên kết tải xuống
    Cách tự động tải xuống tệp từ trang web bằng python

 

3. Mở một cửa sổ trình duyệt mới. Sau đó mở tab mạng

Cách tự động tải xuống tệp từ trang web bằng python

 

4. Dán URL đã sao chép và tìm yêu cầu tab mạng

Cách tự động tải xuống tệp từ trang web bằng python

 

Ở đây trong yêu cầu, hãy tìm yêu cầu đầu tiên. Trong đó, tìm loại nội dung. Đề cập đến nó trong tùy chọn Firefox khi viết tập lệnh thử nghiệm để tải xuống tệp bằng Selenium.  

Hãy ghi nhớ Selenium WebDriver các thử nghiệm phải được thực hiện trên các thiết bị và trình duyệt thực. Hãy nhớ rằng sự phân mảnh thiết bị là mối quan tâm chính của mọi nhà phát triển và người thử nghiệm. Mọi trang web phải hoạt động trơn tru trên nhiều kết hợp thiết bị-trình duyệt-HĐH. Với hơn 9000 thiết bị riêng biệt được sử dụng để truy cập Internet trên toàn cầu, tất cả phần mềm phải được tối ưu hóa cho các cấu hình, chế độ xem và độ phân giải màn hình khác nhau.

Ở trạng thái này, không trình mô phỏng hoặc trình mô phỏng nào có thể sao chép điều kiện người dùng thực. Phần mềm cần được thử nghiệm trên thiết bị thực để chúng có thể hoạt động trong các trường hợp thực tế như pin yếu, cuộc gọi đến, cường độ mạng yếu, v.v. Nếu không thể truy cập phòng thí nghiệm nội bộ, hãy chọn tùy chọn thử nghiệm dựa trên đám mây cung cấp các thiết bị thực.

Lưới Selenium trên đám mây của BrowserStack cung cấp hơn 2000 thiết bị và trình duyệt thực để thử nghiệm tự động. Điều đó có nghĩa là người dùng có thể chạy thử nghiệm trên nhiều thiết bị và trình duyệt thực bằng cách đăng ký, đăng nhập và chọn các kết hợp cần thiết. Người thử nghiệm cũng có thể tiến hành Thử nghiệm Cypress trên hơn 30 phiên bản trình duyệt thực trên Windows và macOS. Phát hiện lỗi trước khi người dùng thực hiện bằng cách kiểm tra phần mềm trong điều kiện người dùng thực với BrowserStack.

Kiểm tra tự động hóa Selenium Trình quản trị trang web Selenium

Bài đăng này có hữu ích không?

Vâng, cảm ơn Không thực sự

Chúng tôi rất tiếc khi biết điều đó. Hãy chia sẻ phản hồi của bạn để chúng tôi có thể làm tốt hơn

Cảm ơn rất nhiều phản hồi của bạn

Thẻ

Kiểm tra tự động hóa Selenium Trình quản trị trang web Selenium

Những bài viết liên quan

Cách tự động tải xuống tệp từ trang web bằng python

Cách đóng trình duyệt trong Selenium

Hướng dẫn từng bước về cách đóng trình duyệt trong quá trình kiểm tra Selenium tự động. Chạy thử nghiệm Selenium

Tìm hiểu thêm

Cách tự động tải xuống tệp từ trang web bằng python

Làm cách nào để tải tệp lên trong Selenium?

Đọc hướng dẫn từng bước về cách tải tệp lên trong Selenium bằng cách sử dụng các đoạn mã có liên quan và hai exa

Tìm hiểu thêm

Cách tự động tải xuống tệp từ trang web bằng python

Kiểm tra trình duyệt chéo cho các cơ quan tiếp thị

Hiểu kiểm tra trình duyệt chéo là gì, triển khai, lợi thế của nó và tầm quan trọng của nó

Làm cách nào để tải xuống dữ liệu từ trang web bằng Python?

Để trích xuất dữ liệu bằng cách sử dụng quét web với python, bạn cần làm theo các bước cơ bản sau. .
Tìm URL mà bạn muốn cạo
Kiểm tra Trang
Tìm dữ liệu bạn muốn trích xuất
Viết mã
Chạy mã và giải nén dữ liệu
Lưu trữ dữ liệu ở định dạng cần thiết

Tôi có thể sử dụng power automate để tải xuống tệp từ trang web không?

Không có hành động tích hợp nào sẽ thực hiện điều đó, nhưng bạn có thể muốn xem Luồng giao diện người dùng Power Automate. Sử dụng Luồng giao diện người dùng, bạn có thể dễ dàng lập trình trình duyệt để đăng nhập và tải xuống tệp bạn muốn . Sau đó, gọi Luồng giao diện người dùng từ Luồng lặp lại thông thường. Đây là phần Giới thiệu về Luồng giao diện người dùng.

Làm cách nào để tải xuống tệp từ phản hồi API bằng Python?

Để tải xuống một tệp bằng Python, chúng ta cần tìm nạp và lưu tệp đó . Quá trình này có thể được thực hiện bằng cách gọi một API hoặc chỉ với một URL web thông thường trỏ đến một GIF mà bạn thích. Trước khi đi xa hơn, hãy hiểu các API REST.

Làm cách nào để tải xuống PDF từ URL trong Python?

Để tìm PDF và tải về chúng ta làm theo các bước sau. .
Nhập thư viện beautifulsoup và yêu cầu
Yêu cầu URL và nhận đối tượng phản hồi
Tìm tất cả các siêu liên kết có trên trang web
Kiểm tra liên kết tệp PDF trong các liên kết đó
Nhận tệp PDF bằng đối tượng phản hồi