Làm cách nào để tải xuống tệp từ một trang web trong python?

Có thể sử dụng Python để tải xuống văn bản hoặc dữ liệu nhị phân từ một URL bằng cách đọc phản hồi của một urllib. yêu cầu. url mở

Dữ liệu đã tải xuống có thể được lưu trữ dưới dạng biến và/hoặc được lưu vào ổ đĩa cục bộ dưới dạng tệp

Dưới đây, bạn sẽ tìm thấy các ví dụ về đoạn mã Python để tải xuống các loại tệp khác nhau từ URL và lưu trữ chúng dưới dạng biến hoặc lưu cục bộ

Mẹo hay. Cách đặt tiêu đề yêu cầu HTTP 'Tác nhân người dùng' trong Python. Đọc thêm →

Tải xuống tệp từ URL bằng Python

Dữ liệu văn bản

Sử dụng đoạn mã Python sau để tải xuống một trang web hoặc tệp văn bản từ URL, lưu nội dung của nó vào một biến rồi in

from urllib.request import urlopen

url = "https://www.shellhacks.com/file.csv"

# Download from URL
with urlopen(url) as file:
    content = file.read().decode()

print(content)

Đọc và giải mã. Đầu tiên, .read() tải xuống dữ liệu ở định dạng nhị phân, sau đó, .decode() chuyển đổi nó thành một chuỗi

Nếu bạn cần lưu dữ liệu đã tải xuống dưới dạng tệp văn bản, bạn có thể thực hiện việc này như sau

from urllib.request import urlopen

url = "https://www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen(url) as file:
    content = file.read().decode()

# Save to file
with open(save_as, 'w') as download:
    download.write(content)

Dữ liệu nhị phân

Để tải xuống tệp nhị phân (e. g. pdf, mp3,

from urllib.request import urlopen

url = "https://www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen(url) as file:
    content = file.read().decode()

# Save to file
with open(save_as, 'w') as download:
    download.write(content)
0) từ URL và lưu nó vào ổ đĩa cục bộ của bạn, sử dụng mã Python như sau

Hôm qua tôi thực sự muốn làm gì đó với Python. Ngoài ra, một người bạn đã gửi cho tôi một liên kết, trong đó có nhiều sách khoa học máy tính hiện đang miễn phí từ Springer. Bây giờ tôi không muốn tải xuống từng cuốn sách riêng lẻ

Vì vậy, tôi tự nghĩ, thật khó để tải sách xuống một cách tự động. Và lo và kìa, nó cũng không khó. Kèm theo, tôi muốn mô tả những điều tôi học được trong quá trình thực hành và cách nó hoạt động để bạn có thể tự động hóa ngay cả những tác vụ web đơn giản

Để tự động hóa một trang web, tôi sử dụng Selenium để điều khiển Chrome (bạn cần cài đặt ChromeDriver). Vì vậy, bước đầu tiên là tạo một phiên bản Chrome và gọi URL tương ứng

Kết quả sau đó trông như thế này

Bây giờ chúng ta có thể tìm kiếm và chọn các phần tử riêng lẻ. Cách dễ nhất là sử dụng XPath. Cách dễ nhất là sao chép nó từ Chrome

Sau đó, bạn có thể chọn phần tử trong mã và xuất văn bản

Kết quả là như sau

Vì vậy, bây giờ chúng ta có thể tải một trang và chọn các phần tử riêng lẻ. Vì vậy, chúng tôi có thể dễ dàng đọc tất cả các yếu tố trên trang và ghi nhớ các liên kết. Sau đó, chúng tôi duyệt qua các trang và ghi nhớ tất cả các liên kết và tiêu đề. Trong phần sau, chúng tôi gọi tất cả các trang riêng lẻ và nhấp vào nút tải xuống. Điều quan trọng là chúng tôi phải giải thích với Chrome rằng các phần tử không chỉ được mở mà còn được tải xuống. Theo mặc định, Chrome mở tệp PDF trong trình xem riêng

Điều này làm cho mã trông như thế này

Kết quả là tất cả sách ở đây được tải vào cùng một thư mục cục bộ mà bạn đang ở. Nói chung, điều quan trọng là không làm điều gì sai trái và đặc biệt là không lạm dụng nó. Tại đây bạn có thể tải xuống tất cả các sách hiện đang miễn phí. Có khoảng 20 người trong số họ. Tôi sẽ nhanh hơn nếu tải sách xuống bằng tay. Tôi chỉ muốn thực hành một chút với Python. Vì vậy, đừng ngu ngốc và tải xuống quá nhiều, ý tôi là cuối cùng thì bạn cũng phải đọc sách 😀

Và vâng, tôi đã cố tình sử dụng hình ảnh cho mã, vì vậy bạn không thể chỉ cần sao chép và dán mã để thu thập dữ liệu trang web. Bạn nên học cách làm điều đó và ở đây bạn có thể đọc mã. Vì vậy, tôi hy vọng lần tới, bạn sẽ tự động hóa nhiệm vụ của mình để tiết kiệm thời gian cho bạn 😀

Trân thành cảm ơn vì đã đọc. Có lẽ tôi có thể truyền cảm hứng cho bạn một chút để tự động hóa các nhiệm vụ nhỏ của riêng bạn hoặc học python

Python, với vô số tính năng và gói đôi khi có thể khiến chúng ta bối rối khi tiếp cận một giải pháp đơn giản và hiệu quả một cách dễ dàng. Tôi nhận ra điều này khi tìm kiếm một vấn đề như vậy — Cách tải xuống từ một liên kết bằng python. Tôi đã tìm thấy nhiều giải pháp, nhưng tôi không hài lòng với sự phức tạp. Tôi tự hỏi tại sao một vấn đề đơn giản như thế này lại cần nhập nhiều gói như vậy để đạt được giải pháp. Vì vậy, không cần đi sâu hơn vào cốt truyện của nó, hãy chuyển sang phần thú vị — The Code

Vấn đề

Bạn có một url với một tệp (bất kỳ định dạng nào) và mục tiêu của bạn là tải nó xuống hệ thống cục bộ của bạn

Giải pháp

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

Vì báo cáo sự cố liên quan đến một cái gì đó với một url, chúng tôi sẽ cần gói **yêu cầu** của python để truy cập url

import requests

Xác định các biến

Tại đây bạn sẽ thêm url cho tệp cần tải xuống và phần mở rộng của tệp (như. mp3,. pdf, v.v. )

url = ‘<your url here>’
file_extension = ‘.<file extension>’

tên tệp

Vì chúng tôi đang tải xuống một tệp, chúng tôi cũng muốn tìm nạp tên tệp cho tệp đó. Thông thường, tên tệp là phần cuối cùng của url có phần mở rộng. Đây là một mã để tìm nạp nó (và nối thêm phần mở rộng vào nó nếu không tồn tại)

# If extension does not exist in end of url, append it
if file_extension not in url.split(“/”)[-1]:
filename = f’{last_url_path}{file_extension}’
# Else take the last part of the url as filename
else:
filename = url.split(“/”)[-1]

Ghi chú bên lề.
- Để biết thêm về phương thức chuỗi **split()** của python, hãy nhấp vào đây.
- Để biết thêm về python **f chuỗi** (hoặc **nội suy chuỗi**), bấm vào đây.

Tạo một tập tin

Trước tiên chúng ta hãy xem mã và sau đó chúng ta sẽ đi qua từng dòng một


with open(filename, ‘wb’) as f:
f.write(r.content)
  • Sử dụng with trong đoạn mã trên.
    1. Trong python, từ khóa with được sử dụng khi làm việc với các tài nguyên không được quản lý (như luồng tệp).
    2. Nó cho phép bạn đảm bảo rằng một tài nguyên được "dọn sạch" khi mã sử dụng nó chạy xong, ngay cả khi các ngoại lệ được đưa ra.
    3. Nó cho phép bạn đảm bảo rằng một tài nguyên được "dọn sạch" khi mã sử dụng nó chạy xong, ngay cả khi các ngoại lệ được đưa ra.
    4. Thông tin thêm về *với *có thể được tìm thấy ở đây.
  • Vì chúng ta muốn ghi vào một tệp (hoặc tạo một tệp) và tệp thuộc loại byte (nếu loại tệp không phải là. txt, mở theo kiểu byte để chạy các hoạt động), vì vậy chúng tôi sử dụng quyền 'wb' để mở tệp.
    Nếu tồn tại một tệp trùng tên, tệp đó sẽ bị ghi đè.

- r. nội dung sẽ trả về tệp trong base64 mà sau đó chúng tôi sẽ ghi nó vào tệp của mình

Mã cuối cùng

Sau khi hợp nhất tất cả các điểm trên, mã của chúng tôi sẽ giống như thế này

Phần kết luận

Hầu như tất cả các loại câu trả lời đều có sẵn trên internet nếu bạn là một lập trình viên, nhưng việc tìm ra một giải pháp đơn giản, dễ đọc nhưng hiệu quả cho dự án của bạn là tùy thuộc vào bạn. Hy vọng blog này giúp ích

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

Khoa học dữ liệu thực tế sử dụng Python .
Nhập mô-đun. yêu cầu nhập khẩu
Nhận liên kết hoặc url. url = 'https. //www. Facebook. com/favicon. ico' r = yêu cầu. get(url, allow_redirects=True)
Lưu nội dung với tên. mở Facebook. ico', 'wb'). nhà văn. nội dung) lưu tệp dưới dạng facebook. ico

Làm cách nào để đọc tệp từ URL trong Python?

Ý tưởng cơ bản .
req=urllib. yêu cầu. Yêu cầu(url). tạo một đối tượng Yêu cầu chỉ định URL chúng tôi muốn
resp=urllib. yêu cầu. urlopen(tương ứng). trả về một đối tượng phản hồi từ máy chủ cho URL được yêu cầu
dữ liệu = tương ứng. đọc(). đối tượng phản hồi ( resp ) giống như tệp, có nghĩa là chúng ta có thể đọc nó

Làm cách nào để lưu tệp trong Python?

Nhấp chuột phải vào cửa sổ Python và chọn Lưu dưới dạng để lưu mã của bạn dưới dạng tệp Python (. py) hoặc tệp Văn bản (. txt). Nếu lưu vào tệp Python, chỉ có mã Python sẽ được lưu.