Bài viết hướng dẫn các bạn mới học cú pháp python có thể sử dụng yêu cầu thư viện của python để tải ảnh của tài khoản Instagram một cách đơn giản
Chuẩn bịcài đặt yêu cầu thư viện.
//www.instagram.com/graphql/query/?query_hash=003056d32c2554def87228bc3fd9668a&variables={"id":"4499737748","first":12,"after":"QVFEX0l4TElsblNiSklTSDJaXzZsLUE3ajlvTE44UktYR2lPNm1SOWtRWmR2d21VZWJNUEJKdHVXU3hIOGNDS2FKQWNhdVBaZk5wZGpmMGRkTG1rZTV6Tg=="}
4PartitionĐầu tiên, chúng ta truy cập vào trang của người dùng để thu thập dữ liệu ảnh F12 -> mạng , dễ dàng tìm thấy api để lấy ảnh của instagram
//www.instagram.com/graphql/query/?query_hash=003056d32c2554def87228bc3fd9668a&variables=%7B%22id%22%3A%224499737748%22%2C%22first%22%3A12%2C%22after%22%3A%22QVFEU0wtaE15VUNGLUd5dXNKR0FHbWx2UmlKS0ZlcDZBVXpFNkdTeXhycFN4SHVhVWJwZzNsTld0cU1xS1RLa1huT2w0X0dnS0tLWnVfUVlsNU5JOTJKRw%3D%3D%22%7D
api has format
//www.instagram.com/graphql/query/?query_hash=003056d32c2554def87228bc3fd9668a&variables={"id":"4499737748","first":12,"after":"QVFEX0l4TElsblNiSklTSDJaXzZsLUE3ajlvTE44UktYR2lPNm1SOWtRWmR2d21VZWJNUEJKdHVXU3hIOGNDS2FKQWNhdVBaZk5wZGpmMGRkTG1rZTV6Tg=="}
đầu tiên. image number will get started from after. With after = "" they ta has been 12 first image [after = end_cursor of request before it]
quá trình thu thập ảnh. Sử dụng kết quả từ yêu cầu api -> chuyển sang json -> kiểm tra xem bài viết là ảnh hay video-> Kiểm tra xem có bao gồm các ảnh khác không -> lấy các url ảnh
Python cung cấp các mô-đun khác nhau như urllib, yêu cầu, v.v. để tải xuống các tệp từ web. Tôi sẽ sử dụng thư viện yêu cầu của python để tải xuống các tệp từ URL một cách hiệu quả
Hãy bắt đầu xem quy trình từng bước để tải xuống tệp bằng URL bằng thư viện yêu cầu−
1. Nhập mô-đun
import requests
2. Nhận liên kết hoặc url
url = '//www.facebook.com/favicon.ico' r = requests.get[url, allow_redirects=True]
3. Lưu nội dung với tên
open['facebook.ico', 'wb'].write[r.content]
lưu tệp dưới dạng facebook. ico
Thí dụ
import requests url = '//www.facebook.com/favicon.ico' r = requests.get[url, allow_redirects=True] open['facebook.ico', 'wb'].write[r.content]
Kết quả
Chúng tôi có thể thấy tệp được tải xuống [biểu tượng] trong thư mục làm việc hiện tại của chúng tôi
Nhưng chúng tôi có thể cần tải xuống các loại tệp khác nhau như hình ảnh, văn bản, video, v.v. từ web. Vì vậy, trước tiên hãy lấy loại dữ liệu mà url đang liên kết đến−
>>> r = requests.get[url, allow_redirects=True] >>> print[r.headers.get['content-type']] image/png
Tuy nhiên, có một cách thông minh hơn, đó là chỉ cần tìm nạp các tiêu đề của url trước khi thực sự tải xuống. Điều này cho phép chúng tôi bỏ qua việc tải xuống các tệp không được tải xuống
________số 8Để hạn chế tải xuống theo kích thước tệp, chúng tôi có thể lấy tệp tin từ tiêu đề độ dài nội dung và sau đó thực hiện theo yêu cầu của chúng tôi
contentLength = header.get['content-length', None] if contentLength and contentLength > 2e8: # 200 mb approx return False
Nhận tên tệp từ một URL
Để lấy tên tệp, chúng ta có thể phân tích cú pháp url. Dưới đây là một quy trình mẫu tìm nạp chuỗi cuối cùng sau dấu gạch chéo ngược [/]
//www.instagram.com/graphql/query/?query_hash=003056d32c2554def87228bc3fd9668a&variables=%7B%22id%22%3A%224499737748%22%2C%22first%22%3A12%2C%22after%22%3A%22QVFEU0wtaE15VUNGLUd5dXNKR0FHbWx2UmlKS0ZlcDZBVXpFNkdTeXhycFN4SHVhVWJwZzNsTld0cU1xS1RLa1huT2w0X0dnS0tLWnVfUVlsNU5JOTJKRw%3D%3D%22%7D
0Ở trên sẽ cung cấp tên tệp của url. Tuy nhiên, có nhiều trường hợp thông tin tên tệp không có trong url chẳng hạn – http. // url. com/tải xuống. Trong trường hợp như vậy, chúng ta cần lấy tiêu đề Bố trí nội dung, chứa thông tin tên tệp
//www.instagram.com/graphql/query/?query_hash=003056d32c2554def87228bc3fd9668a&variables=%7B%22id%22%3A%224499737748%22%2C%22first%22%3A12%2C%22after%22%3A%22QVFEU0wtaE15VUNGLUd5dXNKR0FHbWx2UmlKS0ZlcDZBVXpFNkdTeXhycFN4SHVhVWJwZzNsTld0cU1xS1RLa1huT2w0X0dnS0tLWnVfUVlsNU5JOTJKRw%3D%3D%22%7D
1Đoạn mã phân tích cú pháp url ở trên kết hợp với chương trình trên sẽ cung cấp cho bạn tên tệp từ tiêu đề Bố trí nội dung hầu hết thời gian