<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          GrabantGo 語(yǔ)言開發(fā)的爬蟲框架

          聯(lián)合創(chuàng)作 · 2023-09-20 05:19

          Grabant

          go語(yǔ)言爬蟲框架,自定義javascript規(guī)則

          Grabant是一個(gè)用go語(yǔ)言開發(fā),用javascript語(yǔ)法書寫規(guī)則的爬蟲框架 規(guī)則開發(fā)和神箭手的爬蟲規(guī)則類似,開發(fā)的目的是兼容大部分神箭手已有的規(guī)則

          說(shuō)明

          一些相關(guān)解釋及說(shuō)明如下:

          • 掃描頁(yè)是直接配置的一級(jí)頁(yè)面,這個(gè)頁(yè)面掃描的結(jié)果是抓取列表頁(yè);

          • 列表頁(yè)是掃描后的二級(jí)頁(yè)面,這個(gè)頁(yè)面是為了抓取內(nèi)容頁(yè);

          • 內(nèi)容頁(yè)才是真正匹配我們需要內(nèi)容的規(guī)則的頁(yè)面,內(nèi)容頁(yè)會(huì)匹配我們需要的內(nèi)容并輸出;

          • 每次掃描頁(yè)面,會(huì)抽取頁(yè)面的鏈接放入隊(duì)列進(jìn)行規(guī)則匹配,列表頁(yè)規(guī)則如果為空則列表頁(yè)抽取鏈接全放入列表隊(duì)列,同理內(nèi)容頁(yè),從內(nèi)容頁(yè)中抽取的數(shù)據(jù)是以xpath或者正則匹配的規(guī)則

          舉個(gè)栗子: 如下是一個(gè)簡(jiǎn)易的爬豆瓣電影評(píng)分的規(guī)則

          var configs = {
              domains: ["movie.douban.com"],
              interval: 3000,
              scanurls: ["https://movie.douban.com/cinema/nowplaying/shenzhen/"],
              helperurlregexes: ["https://movie\\.douban\\.com/subject/\\d+/\\?from=playing_poster"],
              fields: [
                  {
                      name: "film Name",
                      selector: "http://*[@id=\"content\"]/h1/span[1]",
                      required: true
                  },
                  {
                      name: "Rank",
                      selector: "http://*[@id=\"interest_sectl\"]/div[1]/div[2]/strong"
                      required: true
                  }
              ]
          };
          
          // 使用以上配置創(chuàng)建一個(gè)爬蟲對(duì)象
          var crawler = new Crawler(configs);
          // 啟動(dòng)該爬蟲
          crawler.start();

          configs是一個(gè)json配置對(duì)應(yīng)的字段意義如下:

          • domains

          定義應(yīng)用爬取哪些域名下的網(wǎng)頁(yè)

          • interval

          爬取頁(yè)面需要的延時(shí),毫秒

          • scanUrls

          定義入口頁(yè)url, 從入口頁(yè)url開始爬取數(shù)據(jù)

          • contenturlregexes

          設(shè)置內(nèi)容頁(yè)url的正則表達(dá)式

          • helperurlregexes

          設(shè)置列表頁(yè)url的正則表達(dá)式

          • field

          定義一個(gè)從內(nèi)容頁(yè)中抽取數(shù)據(jù)的抽取項(xiàng),包括以下內(nèi)容

          1. name

            抽取項(xiàng)的名稱

          2. selector

            抽取項(xiàng)的匹配規(guī)則,可以是正則表達(dá)式或者Xpath

          3. selectortype

            定義抽取區(qū)的類型,正則為SelectorType.Regex, XPath為SelectorType.XPath,如果不設(shè)置默認(rèn)為XPath

          4. required

            bool類型,如果為true,則此項(xiàng)必須存在才爬取此數(shù)據(jù)

          使用方法

          grabant -rule /路徑/規(guī)則文件

          編譯

          go get github.com/robertkrimen/otto
          
          go get github.com/bitly/go-simplejson
          
          go build

           

          v0.01

          此版本是一個(gè)原型版本,目前還有很多判斷不嚴(yán)密的可能引起crash的問題;

          和神箭手不同之出目前有兩個(gè),一是configs項(xiàng)區(qū)分大小寫,需要全為小寫,二fields中selector只支持字符正則;

          現(xiàn)在此版本還未實(shí)現(xiàn)多個(gè)對(duì)象及回調(diào)方法,只支持最簡(jiǎn)單的json規(guī)則.

          瀏覽 17
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产婬乱片A片AAA毛姪片 | 国产激情小视频在线观看 | 免费看A∨ | 91av无码 | 久久婷婷国产综合精品_国产激情 |