Tải về toàn bộ ảnh trên facebook
Nếu các bạn chưa cài đặt Python, xem các bước cài đặt tại đây.
Đầu tiên, tạo thư mục mới và mở thư mục bằng PyCharm. Tạo file main.py trong thư mục này. Khi đã tạo xong, tiến hành cài đặt thư viện request, thực hiện lệnh sau trong cửa sổ terminal:
pip install requests
Sau đó, khai báo các thư viện:
import os, re, requests
Để có thể lấy các thông tin sau quá trình đăng nhập, chúng ta sẽ tạo một cookie thay cho quá trình này.
cookies = {
"c_user": "xxxxxxxxxxxxxxxxx",
"xs": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
Để lấy được giá trị c_user và xs các bạn đăng nhập facebook bằng trình duyệt, nhấn F12, rồi thực hiện theo các lựa chọn phía dưới:
1. Trên trình duyệt Firefox
Sau khi vào công cụ phát triển (F12), các bạn tìm đến thẻ Storage. Tại đây, trong ngăn Cookie sẽ tìm được các giá trị này trong bảng phía dưới:
2. Trên trình duyệt Chromium (Chrome, Microsoft Edge)
Sau khi vào công cụ phát triển (F12), các bạn tìm đến thẻ Application. Tại đây, trong ngăn Cookies sẽ tìm được các giá trị này trong bảng phía dưới:
Sau khi đã có các giá trị của biến cookie, chúng ta cần ID_user của đối tượng mà chúng ta sẽ lấy hình ảnh. Nếu muốn tải xuống hình ảnh của chính mình thì ID_user này chính là c_user. Thay ID_user vào biến friend_id.
Mẹo: Các bạn có thể tìm được ID_user của bất kì ai bằng cách vào xem ảnh của họ. Ảnh của XYZ có đường dẫn là ./photos_by. Sau đó nhấn vào xem một ảnh bất kỳ, chú ý vào đường dẫn phía thanh địa chỉ có dạng:
[https://www.facebook.com/photo.php?fbid=xxxxxxxxxxxxxx&set=pb.yyyyyyyyyyyyyyyy.-]
Đoạn xanh lá kia chính là ID_user!
friend_id = "yyyyyyyyyyyyyyyyyy"
Thay các giá trị trên, sau đó chạy chương trình sau:
import os, re, requests
cookies = {
"c_user": "xxxxxxxxxxxxxxxxx",
"xs": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
friend_id = "yyyyyyyyyyyyyyyyyy"
def load_photo(input_url):
req = requests.Session()
offset = 0
while True:
url = "{}{}".format(input_url, offset)
res = req.get(url, cookies=cookies)
html = res.text
match = re.findall(r"/photo.php\?fbid=([0-9]*)&", html)
if match:
for m in match:
f = open("{}/{}.jpg".format(friend_id, m),"wb")
res = req.get("https://mbasic.facebook.com/photo/view_full_size/?fbid={}".format(m), cookies=cookies)
html = res.text
z = re.search(r"a href=\"(.*?)\"", html)
if z:
url = str(z.groups()[0]).replace("&", "&")
res = req.get(url, cookies=cookies)
f.write(res.content)
f.close()
else:
break
offset+=12
print(offset)
else:
break
if __name__ == "__main__":
if not os.path.exists(friend_id):
os.makedirs(friend_id)
url_photo_tag = "https://mbasic.facebook.com/{}/photoset/pb.{}.-2207520000../?owner_id={}&offset=".format(friend_id, friend_id, friend_id)
url_photo_upload = "https://mbasic.facebook.com/{}/photoset/t.{}/?owner_id={}&offset=".format(friend_id, friend_id, friend_id)
load_photo(url_photo_tag)
load_photo(url_photo_upload)
Chờ cho chương trình quét hết các ảnh của user đó, hình ảnh sẽ được lưu vào thư mục cùng địa chỉ với file chương trình. Have fun!
Và em xin cảm ơn anh đã chia sẻ và giúp đỡ em ạ...
12
Traceback (most recent call last):
File "C:\TEST\main.py", line 45, in
load_photo(url_photo_tag)
File "C:\TEST\main.py", line 27, in load_photo
res = req.get(url, cookies=cookies)
File "C:\TEST\venv\lib\site-packages\requests\sessions.py", line 600, in get
return self.request("GET", url, **kwargs)
File "C:\TEST\venv\lib\site-packages\requests\sessions.py", line 573, in request
prep = self.prepare_request(req)
File "C:\TEST\venv\lib\site-packages\requests\sessions.py", line 484, in prepare_request
p.prepare(
File "C:\TEST\venv\lib\site-packages\requests\models.py", line 368, in prepare
self.prepare_url(url, params)
File "C:\TEST\venv\lib\site-packages\requests\models.py", line 439, in prepare_url
raise MissingSchema(
requests.exceptions.MissingSchema: Invalid URL '/home.php?ref_component=mbasic_home_header&ref_page=XPhotoV…