2013-06-30 38 views
7

Tôi đang cố gắng lấy dữ liệu từ các xu hướng của Google và gặp lỗi "Bạn đã đạt đến giới hạn hàng ngày" chỉ sau 2 lần thử.Giới hạn hạn ngạch Google Xu hướng

Có cách nào để thực hiện việc này không? Tôi biết rằng các dự án API của Google có giới hạn hạn ngạch đặc biệt nhưng Google Xu hướng không có API. Tôi cũng đọc rằng chúng tôi có thể cần phải chuyển nó một tập tin cookie để nó có vẻ như tôi đang đăng nhập. Có ai phải đối mặt với vấn đề này trước khi?

Trả lời

4

Bạn có thể đã vô hiệu hóa cookie của mình, điều này khiến Google Xu hướng nghĩ rằng bạn là rô-bốt

+1

Đã làm việc cho tôi - Tôi đã bật tính năng chặn quảng cáo đã thực hiện điều đó. Vô hiệu hóa nó trên tên miền và nó là tốt. –

4

Tôi đang gặp khó khăn với cùng một vấn đề! Từ câu hỏi của bạn tôi không thể tìm ra những gì giai đoạn bạn đã đạt được ... Nhưng đây là giải pháp mà tôi đã tìm thấy:

  1. Bạn nên thi đua trình duyệt với cookie. Tôi nghĩ cách tốt nhất để làm điều đó là sử dụng thư viện Mechanize.
  2. Lúc đầu chương trình của bạn nên "login" sử dụng yêu cầu GET để "https://accounts.google.com/Login?hl=en"
  3. Ngay sau đó bạn có thể truy cập một số tài nguyên cá nhân khác, nhưng không google xu hướng!
  4. Sau một số đáng kể thì bạn có thể nhận dữ liệu xu hướng của google thành công dưới dạng CSV.
  5. Tôi vẫn chưa phát hiện ra khoảng thời gian chính xác, nhưng nó dài hơn 10 phút và ít hơn vài giờ :). Đó là lý do tại sao lưu cookie của bạn để sử dụng sau này là một ý tưởng tốt!

Vài mẹo khác:

  • Nếu bạn đang phát triển sử dụng python/ruby ​​trong môi trường Windows đừng quên thiết lập CA giấy chứng nhận ROOT gói cho thư viện OpenSSL. Nếu không kết nối HTTPS sẽ thất bại và bạn sẽ không đăng nhập! Xem Getting the `certificate verify failed (OpenSSL::SSL::SSLError)` erro with Mechanize object

  • Tôi khuyên bạn nên lưu cookie vào tệp bên ngoài khi tắt chương trình. Và khôi phục chúng khi khởi động.

  • Đừng quên cho phép chuyển hướng, bởi vì Google luôn sử dụng chuyển hướng.

của Ruby mã ví dụ:

require 'mechanize' 
require 'logger' 
begin 
    agent = Mechanize.new { |a| 
    a.user_agent = 'Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.16' 

    cert_store = OpenSSL::X509::Store.new 
    cert_store.add_file 'cacert.pem' 
    a.cert_store = cert_store 

    a.log = Logger.new('mech.log') 

    if File.file?('mech.cookies') 
     cookies = Mechanize::CookieJar.new 
     cookies.load('mech.cookies') 
     a.cookie_jar = cookies 
    end 

    a.open_timeout = 5 
    a.read_timeout = 6 
    a.keep_alive = true 
    a.redirect_ok = true 
    } 

    LOGIN_URL = "https://accounts.google.com/Login?hl=en&continue=http://www.google.com/trends/" 
    login_page = agent.get(LOGIN_URL) 
    login_form = login_page.forms.first 
    login_form.Email = * 
    login_form.Passwd = * 
    login_response_page = agent.submit(login_form) 

    page = agent.get(url) 

    # DO SOME TRENDS REQUESTS AFTER SIGNIFICANT PERIOD OF TIME 

ensure 
    if agent 
    agent.cookie_jar.save('mech.cookies') 
    end 
end 
3

Tôi nghĩ rằng tôi đã tìm ra cách để giải quyết vấn đề. Chỉ cần đảm bảo rằng bạn gọi API Google Xu hướng với cookie PREF. Đó là bạn không cần đăng nhập tài khoản Google. Tất nhiên, bạn không cần phải thi đua trình duyệt. Cookie PREF là đủ.

OK. Trường hợp cookie PREF xuất phát từ đâu? Nó rất dễ. Chỉ cần mở trình duyệt và đăng nhập vào tài khoản Google của bạn. Cuối cùng, tra cứu cookie PREF dưới trang web của Google, nó nằm ngay dưới tên miền www.google.com. Sau đó sao chép giá trị của cookie PREF vào chương trình hoặc tập lệnh của bạn. Đó là tất cả.

Tôi đã gọi API Google Trends hàng trăm lần trong vài giây theo cách này. Chúc bạn may mắn!

+0

bạn có thể cho tôi biết cách sử dụng nó trong java không ?? –

-5

Tôi tìm thấy bài viết này về phòng ngừa hoặc chỉ là một hiệu ứng Zeta-Jones trong google Trends, nó rất dễ sử dụng: G Fond, A Gamanb, E Haffenb, P Llorca. "Google Trends: ready for real-time suicide prevention or just a Zeta-Jones effect ?." Tạp chí Quốc tế về Mạng Máy tính và Truyền thông Bảo mật 3, không. 1 (2015): 1-5.

+1

Bạn có thể giải thích cách này trả lời câu hỏi của OP không? – ChipsLetten

Các vấn đề liên quan