小白也可速學的python爬蟲教程,超級簡單


小白也可速學的python爬蟲教程,超級簡單

此文屬於入門級級別的爬蟲,老司機們就不用看了。

本次主要是爬取網易新聞,包括新聞標題、作者、來源、發佈時間、新聞正文。

首先我們打開163的網站,我們隨意選擇一個分類,這裡我選的分類是國內新聞。

然後鼠標右鍵點擊查看源代碼,發現源代碼中並沒有頁面正中的新聞列表。

這說明此網頁採用的是異步的方式。

也就是通過api接口獲取的數據。

那麼確認了之後可以使用F12打開谷歌瀏覽器的控制檯,點擊Network,我們一直往下拉,發現右側出現了:"… special/00804KVA/cm_guonei_03.js? … "之類的地址,點開Response發現正是我們要找的api接口。

可以看到這些接口的地址都有一定的規律:“cm_guonei_03.js”、 “cm_guonei_04.js”,那麼就很明顯了:

<code>'http://temp.163.com/special/00804KVA/cm_guonei_0{}.js'/<code>

接下來只需要用到的python的兩個庫:

<code>requestsjsonBeautifulSoup/<code>

requests庫就是用來進行網絡請求的,說白了就是模擬瀏覽器來獲取資源。

由於我們採集的是api接口,它的格式為json,所以要用到json庫來解析。

BeautifulSoup是用來解析html文檔的,可以很方便的幫我們獲取指定div的內容。

下面開始編寫我們爬蟲:

第一步先導入以上三個包:

<code>import jsonimport requestsfrom bs4 import BeautifulSoup/<code>

接著我們定義一個獲取指定頁碼內數據的方法:

<code>def get_page(page):    url_temp = 'http://temp.163.com/special/00804KVA/cm_guonei_0{}.js'    return_list = []    for i in range(page):        url = url_temp.format(i)        response = requests.get(url)        if response.status_code != 200:            continue        content = response.text  # 獲取響應正文        _content = formatContent(content)  # 格式化json字符串        result = json.loads(_content)        return_list.append(result)    return return_list/<code>
小白也可速學的python爬蟲教程,超級簡單

這樣子就得到每個頁碼對應的內容列表:

之後通過分析數據可知下圖圈出來的則是需要抓取的標題、發佈時間以及新聞內容頁面。

既然現在已經獲取到了內容頁的url,那麼接下來開始抓取新聞正文。

在抓取正文之前要先分析一下正文的html頁面,找到正文、作者、來源在html文檔中的位置。

我們看到文章來源在文檔中的位置為:id = “ne_article_source” 的 a 標籤。

作者位置為:class = “ep-editor” 的 span 標籤。

正文位置為:class = “post_text” 的 div 標籤。

下面是採集這三個內容的代碼:

<code>def get_content(url):    source = ''    author = ''    body = ''    resp = requests.get(url)    if resp.status_code == 200:        body = resp.text        bs4 = BeautifulSoup(body)        source = bs4.find('a', id='ne_article_source').get_text()        author = bs4.find('span', class_='ep-editor').get_text()        body = bs4.find('div', class_='post_text').get_text()    return source, author, body/<code>

到此為止我們所要抓取的所有數據都已經採集了。

那麼接下來當然是把它們保存下來,為了方便我直接採取文本的形式來保存。下面是最終的結果:

格式為json字符串,“標題” :

[ ‘日期’, ‘url’, ‘來源’, ‘作者’, ‘正文’ ]

要注意的是目前實現的方式是完全同步的,線性的方式,存在的問題就是採集會非常慢。

主要延遲是在網絡IO上,下次可以升級為異步IO,異步採集

最後小編幫助大家整理了一套python教程,下面展示了部分,希望也能幫助對編程感興趣,想做數據分析,人工智能、爬蟲或者希望從事編程開發的小夥伴,畢竟python工資也還可以,如果能幫到你請點贊、點贊、點贊。

小白也可速學的python爬蟲教程,超級簡單

小白也可速學的python爬蟲教程,超級簡單

小白也可速學的python爬蟲教程,超級簡單

小白也可速學的python爬蟲教程,超級簡單

小白也可速學的python爬蟲教程,超級簡單

PS:如果你喜歡python,並覺得這篇文章對你有益的話,麻煩多多點贊關注支持!


分享到:


相關文章: