url的位址迴圈怎麼寫 用Golang寫爬蟲 一

2021-10-12 08:02:25 字數 1510 閱讀 7884

之前一直都是再用python寫爬蟲,最近想體驗下golang寫爬蟲的感覺,所以就有了這個系列。我想要抓取的頁面是豆瓣top250頁面,選擇它的理由有3個:

豆瓣頁面**相對規範

豆瓣對爬蟲愛好者相對更寬容

top250頁面簡潔,很適合拿來練手

我們先看第一版的**。

按邏輯我把抓取**分成2個部分:

http請求

解析頁面中的內容

我們先看http請求,golang語言的http請求庫不需要使用第三方的庫,標準庫就內建了足夠好的支援:

}我把url請求的邏輯都放在了fetch函式中,裡面做了一些異常處理。值得說的有2點:

在header中設定了user-agent,讓訪問看起來更像搜尋引擎bot。如果乙個**希望自己的內容被google收錄那麼他就不會拒絕這樣的ua的訪問。

需要通過ioutil.readall 讀取resp的body內容,最後用string(body)把它轉化成字串

接著就是解析頁面的部分:

import (

"regexp"

"strings"

)func parseurls(url string)

elapsed := time.since(start)

fmt.printf("took %s", elapsed)

}

在golang中把數字轉成字串需要使用strconv.itoa(嘿嘿,本部落格網域名稱就是這個模組),這樣就可以根據start的引數的不通拼出正確的頁面路徑。用乙個for迴圈完成翻頁。

執行起來非常快:

❯ go run crawler/doubancrawler1.go

... # 省略輸出

took 1.454627547s

通過終端輸出可以看到我們拿到了對應電影條目的id和電影標題!

用python的for迴圈寫氣泡排序

題目 利用for迴圈,完成a 1,7,4,89,34,2 的氣泡排序 氣泡排序 小的排前面,大的排後面。第一種 可以看到每次排序的結果 1 a 100,97,4,89,34,2 2 n 0 3for n in range 0,5 4for i in range 0,len a 1 5if a i a...

怎麼用php寫乙個日誌功能的函式

我們要寫乙個寫日誌的函式,首先需要了解需求,我們一般怎麼用日誌函式呢?例如,程式執行到某一步,我希望把這個變數 位址 user address的值列印到日誌,我們希望日誌裡是這麼寫的 xx xx xx xx xx user address 上海市楊浦區 xx 然後每一條日誌都要換行,都有日期時間,假...

怎麼用Python寫乙個三體的氣候模擬程式

所謂三體氣候模擬,就是將太陽出現的情況進行分類討論,然後將其呈現出來。比如說一顆太陽就是恆紀元,兩顆太陽可能是二日凌空或二日連珠,三顆太陽也可能是三日凌空或三日連珠。只要明白了這一點,這個三體氣候模擬的程式就很好寫了。在寫程式前,得先導入乙個庫。由於三體問題的複雜性,我們姑且將三顆太陽出現的概率定位...