Tôi đã cố gắng vài ngày nay (không thành công) để xóa thành phố khỏi khoảng 500 URL Facebook. Tuy nhiên, Facebook xử lý dữ liệu của nó một cách rất lạ và tôi không thể tìm ra những gì đang xảy ra dưới mui xe để hiểu những gì tôi cần làm.Cạo dữ liệu từ Facebook bằng Python
Về cơ bản vấn đề là Facebook hiển thị số lượng dữ liệu rất khác nhau tùy thuộc vào người đã đăng nhập và cài đặt bảo mật của tài khoản là gì. Ví dụ, hãy thử mở ba liên kết sau đây, cả hai trong một trình duyệt mà bạn đang đăng nhập vào Facebook, và một trong những nơi bạn không phải là:
- http://www.facebook.com/100004210542493
- http://www.facebook.com/100000802680038
- http://www.facebook.com/100001200731989
Như bạn có thể thấy, Facebook tải dữ liệu trong cả hai trường hợp cho liên kết đầu tiên, nhưng chỉ nhận dữ liệu cho liên kết thứ hai nếu bạn đăng nhập (vào bất kỳ tài khoản nào). Liên kết thứ ba hiển thị thành phố khi bạn đăng nhập, nhưng chỉ hiển thị thông tin khác khi bạn không đăng nhập.
Lý do điều này cực kỳ có vấn đề (và liên quan đến Python) là khi cố gắng xóa trang bằng Beautiful Soup hoặc Mechanize, tôi không thể tìm ra cách để chương trình "giả vờ" rằng tôi đã đăng nhập vào tài khoản . Điều này có nghĩa là tôi có thể dễ dàng lấy dữ liệu ra khỏi loại liên kết đầu tiên (trong đó có ít hơn 10), nhưng tôi không thể lấy thành phố ra khỏi loại thứ hai hoặc thứ ba. Cho đến nay tôi đã thử một số giải pháp với ít thành công.
Dưới đây là một số mẫu mã mà làm việc một cách chính xác cho các loại hình đầu tiên, nhưng không phải với nhiều loại khác:
import mechanize
import re
import csv
user_info = []
fb_url = 'http://www.facebook.com/100004210542493'
br = mechanize.Browser()
br.set_handle_robots(False)
br.open(fb_url)
all_html = br.response().get_data()
print all_html
city = re.search('fsl fwb fcb">(.+?)</a></div><div class="aboutSubtitle fsm fwn fcg', all_html).group(1)
user_info = [fb_url, city]
print user_info
Tôi cũng có một phiên bản sử dụng Beautiful Soup. Nếu bất cứ ai có bất kỳ ý tưởng về cách để có được xung quanh này, tôi sẽ rất biết ơn. Cảm ơn bạn!
Có may mắn không? Tôi cũng đã thử mọi thứ nhưng thất bại. – xxbinxx