成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python爬蟲案例:抓取網(wǎng)易新聞

jubincn / 3385人閱讀

摘要:本次主要是爬取網(wǎng)易新聞,包括新聞標(biāo)題作者來源發(fā)布時間新聞?wù)?。既然現(xiàn)在已經(jīng)獲取到了內(nèi)容頁的,那么接下來開始抓取新聞?wù)摹?/p>

此文屬于入門級級別的爬蟲,老司機(jī)們就不用看了。

本次主要是爬取網(wǎng)易新聞,包括新聞標(biāo)題、作者、來源、發(fā)布時間、新聞?wù)?/strong>。

首先我們打開163的網(wǎng)站,我們隨意選擇一個分類,這里我選的分類是國內(nèi)新聞。然后鼠標(biāo)右鍵點擊查看源代碼,發(fā)現(xiàn)源代碼中并沒有頁面正中的新聞列表。這說明此網(wǎng)頁采用的是異步的方式。也就是通過api接口獲取的數(shù)據(jù)。

那么確認(rèn)了之后可以使用F12打開谷歌瀏覽器的控制臺,點擊Network,我們一直往下拉,發(fā)現(xiàn)右側(cè)出現(xiàn)了:"... special/00804KVA/cm_guonei_03.js? .... "之類的地址,點開Response發(fā)現(xiàn)正是我們要找的api接口。


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

http://temp.163.com/special/0...*).js

上面的連接也就是我們本次抓取所要請求的地址。
接下來只需要用到的python的兩個庫:

requests

json

BeautifulSoup

requests庫就是用來進(jìn)行網(wǎng)絡(luò)請求的,說白了就是模擬瀏覽器來獲取資源。
由于我們采集的是api接口,它的格式為json,所以要用到j(luò)son庫來解析。BeautifulSoup是用來解析html文檔的,可以很方便的幫我們獲取指定div的內(nèi)容。

下面開始編寫我們爬蟲:

第一步先導(dǎo)入以上三個包:

import json
import requests
from bs4 import BeautifulSoup

接著我們定義一個獲取指定頁碼內(nèi)數(shù)據(jù)的方法:

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  # 獲取響應(yīng)正文
        _content = formatContent(content)  # 格式化json字符串
        result = json.loads(_content)
        return_list.append(result)
    return return_list

這樣子就得到每個頁碼對應(yīng)的內(nèi)容列表:


之后通過分析數(shù)據(jù)可知下圖圈出來的則是需要抓取的標(biāo)題、發(fā)布時間以及新聞內(nèi)容頁面。

既然現(xiàn)在已經(jīng)獲取到了內(nèi)容頁的url,那么接下來開始抓取新聞?wù)摹?/p>

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

我們看到文章來源在文檔中的位置為:id = "ne_article_source" 的 a 標(biāo)簽。
作者位置為:class = "ep-editor" 的 span 標(biāo)簽。
正文位置為:class = "post_text" 的 div 標(biāo)簽

下面試采集這三個內(nèi)容的代碼:

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

到此為止我們所要抓取的所有數(shù)據(jù)都已經(jīng)采集了。

那么接下來當(dāng)然是把它們保存下來,為了方便我直接采取文本的形式來保存。下面是最終的結(jié)果:

格式為json字符串,“標(biāo)題” : [ ‘日期’, ‘url’, ‘來源’, ‘作者’, ‘正文’ ]。

要注意的是目前實現(xiàn)的方式是完全同步的,線性的方式,存在的問題就是采集會非常慢。主要延遲是在網(wǎng)絡(luò)IO上,下次可以升級為異步IO,異步采集,有興趣的可以關(guān)注下次的文章。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42498.html

相關(guān)文章

  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • [爬蟲手記] 我是如何在3分鐘內(nèi)開發(fā)完一個爬蟲

    摘要:前言開發(fā)爬蟲是一件有趣的事情。的可配置爬蟲是基于的,因此天生是支持并發(fā)的。遵守協(xié)議這個默認(rèn)是開啟的。的可配置爬蟲降低了爬蟲的開發(fā)時間,增加了爬蟲開發(fā)效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。 前言 開發(fā)爬蟲是一件有趣的事情。寫一個程序,對感興趣的目標(biāo)網(wǎng)站發(fā)起HTTP請求,獲取HTML,解析HTML,提取數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫或者存為CSV、JSON等格式,再...

    sushi 評論0 收藏0
  • [爬蟲手記] 我是如何在3分鐘內(nèi)開發(fā)完一個爬蟲

    摘要:前言開發(fā)爬蟲是一件有趣的事情。的可配置爬蟲是基于的,因此天生是支持并發(fā)的。的可配置爬蟲降低了爬蟲的開發(fā)時間,增加了爬蟲開發(fā)效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。前言 開發(fā)爬蟲是一件有趣的事情。寫一個程序,對感興趣的目標(biāo)網(wǎng)站發(fā)起HTTP請求,獲取HTML,解析HTML,提取數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫或者存為CSV、JSON等格式,再用自己熟悉的語言例如Python對...

    YorkChen 評論0 收藏0
  • Python入門網(wǎng)絡(luò)爬蟲之精華版

    摘要:學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分個大的版塊抓取,分析,存儲另外,比較常用的爬蟲框架,這里最后也詳細(xì)介紹一下。網(wǎng)絡(luò)爬蟲要做的,簡單來說,就是實現(xiàn)瀏覽器的功能。 Python學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分3個大的版塊:抓取,分析,存儲 另外,比較常用的爬蟲框架Scrapy,這里最后也詳細(xì)介紹一下。 首先列舉一下本人總結(jié)的相關(guān)文章,這些覆蓋了入門網(wǎng)絡(luò)爬蟲需要的基本概念和技巧:寧哥的小站-網(wǎng)絡(luò)爬蟲,當(dāng)我們在瀏覽器中輸入...

    Bmob 評論0 收藏0
  • Python3 基于asyncio的新聞爬蟲思路

    摘要:開始,加入了新的語法,和這兩個關(guān)鍵字,也成了標(biāo)準(zhǔn)庫,這對于我們寫異步的程序來說就是如虎添翼,讓我們輕而易舉的實現(xiàn)一個定向抓取新聞的異步爬蟲。網(wǎng)址池異步爬蟲的所有流程不能單單用一個循環(huán)來完成,它是多個循環(huán)至少兩個相互作用共同完成的。 showImg(https://segmentfault.com/img/bVbsjjR?w=742&h=487); Python寫爬蟲是非常方便的,爬取的...

    zhangyucha0 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<