English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

مثال على استخراج الأخبار باستخدام أداتة Gecco في Java

رأيت مؤخرًا أداة روبوت Gecco، وأعجبني بسهولة الاستخدام، لذا كتبت DEMO لاختبار الاستخراج من الموقع
http://zj.zjol.com.cn/home.html، حيث يتم استخراج عناوين الأخبار ووقت نشرها كعناصر اختبار للاستخراج. يمكن اختيار عناصر HTML باستخدام اختيارor jQuery مثل، مما يجعل العمل سهلاً للغاية. يستخدم Gecco رموز التعليق بشكل رئيسي لتحقيق تطابق URL، مما يجعله نظيفًا وجميلًا.

إضافة تعتمد Maven

<dependency>
   <groupId>com.geccocrawler</groupId>
   <artifactId>gecco</artifactId>
   <version>1.0.8</version>
</dependency>

كتابة عمليات استخراج صفحة القائمة

@Gecco(matchUrl = "http://zj.zjol.com.cn/home.html?pageIndex={pageIndex}&pageSize={pageSize}",pipelines = "zJNewsListPipelines")
public class ZJNewsGeccoList implements HtmlBean {
  @Request
  private HttpRequest request;
  @RequestParameter
  private int pageIndex;
  @RequestParameter
  private int pageSize;
  @HtmlField(cssPath = "#content > div > div > div.con_index > div.r.main_mod > div > ul > li > dl > dt > a")
  private List<HrefBean> newList;
}
@PipelineName("zJNewsListPipelines")
public class ZJNewsListPipelines implements Pipeline<ZJNewsGeccoList> {
  public void process(ZJNewsGeccoList zjNewsGeccoList) {}}
    HttpRequest request=zjNewsGeccoList.getRequest();
    for (HrefBean bean:zjNewsGeccoList.getNewList()){
      //دخول صفحة التفاصيل وجمع المعلومات
    SchedulerContext.into(request.subRequest("http://zj.zjol.com.cn"+bean.getUrl()));
    }
    int page=zjNewsGeccoList.getPageIndex()+1;
    String nextUrl = "http://zj.zjol.com.cn/home.html?pageIndex="+page+"&pageSize=100";
    //جمع الصفحة التالية
    SchedulerContext.into(request.subRequest(nextUrl));
  }
}

يُكتب لجمع المعلومات من صفحة تفاصيل الأخبار

@Gecco(matchUrl = "http://zj.zjol.com.cn/news/[code].html" ,pipelines = "zjNewsDetailPipeline")
public class ZJNewsDetail implements HtmlBean {
  @Text
  @HtmlField(cssPath = "#headline")
  private String title ;
  @Text
  @HtmlField(cssPath = "#content > div > div.news_con > div.news-content > div:nth-child(1) > div > p.go-left.post-time.c-gray")
  private String createTime;
}
@PipelineName("zjNewsDetailPipeline")
public class ZJNewsDetailPipeline implements Pipeline<ZJNewsDetail> {
  public void process(ZJNewsDetail zjNewsDetail) {}}
    System.out.println(zjNewsDetail.getTitle()+" "+zjNewsDetail.getCreateTime());
  }
}

تشغيل الدالة الرئيسية

public class Main {
  public static void main(String [] rags){
    GeccoEngine.create()
        //مسار حزمة المشروع
        .classpath("com.zhaochao.gecco.zj")
        //عنوان الصفحة التي تبدأ فيها الاستخراج
        .start("http://zj.zjol.com.cn/home.html?pageIndex=1&pageSize=100")
        //فتح عدد من روبوتات الاستخراج
        .thread(10)
        //فترة انتظار بين كل استخراج لكل روبوت
        .interval(10)
        //استخدام userAgent للجهاز المحمول
        .mobile(false)
        //تبدأ في العمل
        .run();
  }
}

نتائج الاستخراج

هذا هو محتوى المقال كله، آمل أن يكون مفيدًا لتعليمكم، وأتمنى أن تدعموا تعليمية النفخ النافذة.

بيان: محتويات هذا المقال تم جمعها من الإنترنت، ملكية المحتويات لصاحب الحقوق، المحتويات تم تقديمها من قبل مستخدمي الإنترنت بطرقهم الخاصة، ويستخدم هذا الموقع ليس لديه حقوق الملكية، لم يتم تعديل المحتويات بشكل إنساني، ولا يتحمل أي مسؤولية قانونية. إذا اكتشفت أن هناك محتويات مشبوهة بحقوق النسخ، فالرجاء إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # ب @) لإبلاغنا، وتقديم الدليل على ذلك، إذا تم التحقق من ذلك، سيتم حذف المحتويات المشبوهة فورًا.

مفضل لك