Crawl site adidas[.]com

Discussion in 'Hỏi Đáp Kỹ Thuật' started by Le Hieu, Apr 20, 2020.

Tags:
  1. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    E đang crawl dữ liệu từ site adidas nhưng bị 1 vấn đề là e thử request bằng Postman thì lấy dữ liệu rất ok nhưng khi chạy code trên máy hoặc server đều bị 500 error timeout do không qua được bảo mật của adidas thì phải {cry}{cry} Em cũng thử request bằng cách gọi javascript thì lỗi "
    Reason: CORS header 'Access-Control-Allow-Origin' missing"
    Mọi người cho e hỏi có cách nào để crawl nó không ạ? {beauty}{beauty}{beauty}
    Em cảm ơn
     
  2. wpresources

    wpresources Bang Chúng

    Trang đấy mình có thấy gì đâu sao phải lấy cầu kỳ vậy.Test thử crawl một url với jsoup(không nhầm thì bác cũng biết java) mình thấy lấy bình thường
     
    Le Hieu likes this.
  3. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    Ủa lạ nhỉ sao e request n cứ lỗi timeout hoài luôn sau đấy e có fix thì thêm user-agent vào thì request được sáng hôm sau thì lại timeout {cry} và bây giờ thì e đã thử mọi cách thì đều timeout duy chỉ có đúng 1 cách là dùng selenium mở trình duyệt lên request thì ok mà e đang muốn đưa tool lên chạy trên web nên k dùng selenium được {cry}
     
  4. wpresources

    wpresources Bang Chúng

    Time out thì tăng thời gian timeout lên,không thì đệ quy nó cho được thì thôi.Nếu lo thì đệ quy chục lần không thành công ghi lại url lỗi phân tích sau.Bác mở dịch vụ cho người khác à cho bản thân thì làm dễ thôi,bác không nói ngôn ngữ bác dùng nên khó đề nghị cụ thể được,em dùng jsoup thấy ok rồi.
     
  5. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    E cũng tăng timeout lên r nhưng mà e tìm hiểu thì là do thằng adidas này n check bảo mật j thì phải bởi vì e thấy nếu request mà qua thì n lấy nhanh lắm còn k qua là cứ quay nằm im :(( E lm tool trên déktop bằng java swing ok r nhưng mà đội nv nữ n ngu quá k cả cài lên mà sử dụng nữa nên là đnag tính lm trên web dùng python flask
     
  6. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    A request jsoup có cần cho user agent vào k hay cứ request bth thôi??
     
  7. wpresources

    wpresources Bang Chúng

    Mình test mấy lần vẫn không thấy bảo mật chỗ nào {feel_good}
    Code:
    import java.io.IOException;
    import java.util.concurrent.atomic.AtomicInteger;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import nw.response.ResponseService;
    import org.jsoup.Connection;
    import org.jsoup.Jsoup;
    
    public class NewClass {
    
        public static void main(String[] args) {
            try {
                Connection.Response response = getResponse("https://www.adidas.com.vn/vi/superstar%20w/FV3396.html", new AtomicInteger(5));
                System.out.println(response.parse().html());
            } catch (IOException ex) {
                Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    
        public static Connection.Response getResponse(String url, AtomicInteger aiTrials) {
            try {
                Connection.Response response = Jsoup.connect(url)
                        .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0")
                        .followRedirects(false)
                        .ignoreContentType(true)
                        .followRedirects(true)
                        .timeout(15000)
                        .execute();
                return response;
            } catch (IOException ex) {
                Logger.getLogger(ResponseService.class.getName()).log(Level.SEVERE, null, ex);
                responseCallback(url, aiTrials);
            }
            return null;
        }
    
        private static void responseCallback(String url, AtomicInteger aiTrials) {
            if (aiTrials != null && aiTrials.getAndDecrement() > 0) {
                getResponse(url, aiTrials);
            }
        }
    }
    
     
    Le Hieu likes this.
  8. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    E test lại theo code bên trên của a thì thấy thêm cái ignoreContentType(true) và có set user agent vào thì code đã hoạt động được {haha} kb làm sao để thêm cái đấy ở python requests a nhỉ?
     
  9. wpresources

    wpresources Bang Chúng

    Chịu đợi pro khác vào thôi
     
    Le Hieu likes this.
  10. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    Em cảm ơn ạ, nếu bí quá chắc e lm cái service bằng java web để gọi vậy {cry} hơi cực
     
  11. wpresources

    wpresources Bang Chúng

    ServiceJava làm host hiếc có đắt không bạn,em thấy có thằng javafx hình như cũng có hỗ trợ trên nền tảng web đấy dùng nó dễ hơn nhiều
     
    Le Hieu likes this.
  12. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    E cứ thuê server 5$ của Vultr r tự cài lên thôi nếu chạy thấy quá tải thì lại nâng cấp {haha} còn vụ javafx chắc phải tìm hiểu thêm chứ cái đấy e cũng k rõ lắm.
     
  13. wpresources

    wpresources Bang Chúng

    Javafx có khác gì swing đâu,code nó là java thường có thêm giao diện thôi.Theo em bác nên hướng luôn vào javafx vì nó đơn giản cũng dễ thiết kế,dễ hơn swing nhiều
     
    Le Hieu likes this.
  14. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    Hix thế thì e cũng có tool đấy r tại là thằng java này khi sử dụng đưa cho bọn nv nữ bọn n kb cài jdk để chạy mà mình viết hướng dẫn bọn n đọc xong nói k hiểu trong khi mình có để hết các file r {cry}{cry} thế nên e ms phải chuyển hướng qua web để bọn n vào qua link r sử dụng cho dễ dàng {hang}
     
  15. wpresources

    wpresources Bang Chúng

    à ừm bạn có thể tham khảo ví dụ khi đưa javafx nên web từ thằng này https://www.jpro.one/?page=demos.Nó cũng cung cấp các mã để đưa dữ liệu dễ hơn.Mà nếu crawl dữ liệu lại đưa cho một đống người thế server bác chịu nổi không,nên nhớ vultr có giới hạn băng thông(nếu có giải pháp thì share với nhé)
     
    Le Hieu likes this.
  16. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    E crawl theo cách là lưu lại vào db và và sp từ adidas cũng k nhiều lắm e còn tính kéo hết về up lên db :) với e cũng có khoảng hơn 20 người sử dụng thôi, e cũng lm 1 vài tool r thấy chưa có hiện tượng hết băng thông
     
  17. wpresources

    wpresources Bang Chúng

    Mình hiện tại làm là chỉ lưu mỗi md5 url vào database dùng để check trùng thôi.Còn dữ liệu mình lưu hết vào file mỗi dòng là một json nếu lớn quá sau 1m dòng có thể cắt file khác.Vì crawl dữ liệu nhiều lưu database sau này cần phải import rồi đọc nó khá lâu mà mất thời gian.
    Bác crawl dữ liệu theo kiểu em thì bác có hứng thú trao đổi dữ liệu ko
     
  18. Le Hieu

    Le Hieu Sơ Nhập Giang Hồ

    E chưa trao đổi dữ liệu bao giờ :))) nên e cũng kb được nữa nếu a thích thì e có thể gửi cho a thôi vì e thấy dữ liệu từ adidas cũng k nhiều e lấy về để order hàng thôi :) cũng kb lm j nữa
     
  19. wpresources

    wpresources Bang Chúng

    Mình cũng chưa nhưng hiện giờ mình làm việc khác nên chưa crawl được.Adidas thì chả có ý tưởng gì hết.Chuyên mục chém gió không có tính kỹ thuật nữa em và bác nên chuyển qua inbox ạ
     
    Le Hieu likes this.