国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

新聞爬蟲倒騰筆記

April / 1196人閱讀

摘要:新聞爬蟲在列表頁獲取列表和時間材料,開發(fā)人員工具,插件,,安裝包使用開發(fā)人員工具分析網(wǎng)站右鍵或打開,刷新載入打開頁簽,點選第二排的小漏斗,點入頁面,因為新聞都有被檢索到的需要,所以一般情況下都可以在第一個文檔中找到需要的信息。

新聞爬蟲1.0 在列表頁獲取列表和時間 材料:Pycharm,Chrome開發(fā)人員工具,infoLite插件,bs4,request 安裝包
pip install requests
pip install beautifulsoup4
使用Chrome開發(fā)人員工具分析網(wǎng)站

右鍵或Ctrl+shift+I打開,F(xiàn)5刷新載入

打開network頁簽,點選第二排的小漏斗(filter),點入doc頁面,因為新聞都有被檢索到的需要,所以一般情況下都可以在第一個doc文檔中找到需要的信息。我們現(xiàn)在第一個目標是獲取這個頁面里所有的國內(nèi)新聞標題、時間、鏈接。選擇第一個doc,通過responce看看是否有所需信息。
3.再通過查看header頁面可以看到信息被得到的方式是GET,這說明我們可以通過get調(diào)用,而通過第一排的Request URL我們就可以知道想要得到網(wǎng)站信息的目標url是什么。

使用request調(diào)用網(wǎng)頁

request是URL的擷取套件,可以用postputgetdelete來存取網(wǎng)絡資源

import requests
newurl = "目標網(wǎng)站"
res = requests.get(newurl)
res.encoding = "utf-8"
# 申明編碼避免res內(nèi)容出現(xiàn)亂碼
使用BeautifulSoup4進行加工

通過request的get得到了網(wǎng)頁的所有內(nèi)容,但是還有很多不需要用到的樣式語言等,本來可以用正則表達式來進行刪選,但是這里使用第三方包BeautifulSoup4對原材料進行處理。

soup = BeautifulSoup(res.text,"html.parser")
# 需要注釋res的類型是HTML,使用parser對HTML進行解析。

這里需要稍微了解一點HTML/CSS里的DOM Tree知識。
(注:DOM Tree是指通過DOM將HTML頁面進行解析,并生成的HTML tree樹狀結(jié)構(gòu)和對應訪問方法。)

這方面我自己是理解的,但是理解的不透徹講不清。詳參這里
總之,我們所需要的內(nèi)容是在各種各樣的元素中的,它們可能是含有特定標簽的HTML元素,也有可能是含有特定CSS屬性的元素。(我所理解的是HTML元素是HTML固有的,結(jié)構(gòu)層次已經(jīng)劃分好了的。而特定CSS屬性的元素則是因為特殊的格式需要設置的靈活性的一個元素。一般是通過id和類來設置。)
select
為了得到特定的元素,使用beautifulsoup4中的select
使用方法是:

# 含有特定標簽的HTML元素
header = soup.select("h1")
# 含有特定css屬性的元素 ID
header = soup.select("#title")
# 含有特定css屬性的元素 class
link = soup.select(".link")

select的預設方法是傳回一個list,所以用解開列表的方式解開并且取出來就可以。

使用infoLite插件獲取

infoLite插件下載地址
接下來,我們就需要知道爬取目標的元素到底是什么。有兩種方法,一是借助infoLite插件,一是借助開發(fā)工具的elements自己查找。為了保證查找的準確性,兩種方法最好都掌握。
首先是使用infoLite插件,點擊就可以知道元素的類型。但是有時候情況會比較復雜,比如說,會遇到css類里使用HTML元素的情況。在這種情況下先select CSS 最大共性元素再select出HTML元素。

標題

(網(wǎng)頁其他部分也有h2,可以結(jié)合開發(fā)工具看更清晰。)

時間
.time

鏈接
URL鏈接可以從上面的DOM Tree看到URL是元素的屬性,所以需要通過開發(fā)工具看。在網(wǎng)頁的鏈接中通常使用a tag去鏈接其他網(wǎng)頁,而href就是連結(jié)的橋梁。

列表里其實是一個字典,利用字典的性質(zhì),用key(href)調(diào)用出鏈接。

完整
import requests
from bs4 import BeautifulSoup
res = requests.get("http://news.sina.com.cn/china/")
res.encoding = "utf-8"
soup = BeautifulSoup(res.text,"html.parser")
for news in soup.select(".news-item"):
if len(news.select("h2"))>0:
#保證存在,防止遍歷時輸出空集
h2 = news.select("h2")[0].text
#取出內(nèi)容
time = news.select(".time")[0].text
a = news.select("a")[0]["href"]
print (time,h2,a)

學習參考自此網(wǎng)站

新聞爬蟲2.0 抓取新聞內(nèi)頁 材料:Pycharm,Chrome開發(fā)人員工具,infoLite插件,bs4,request

在前面我們已經(jīng)將新聞列表頁面的所有鏈接都下載下來了,但是還不夠,我們希望可以獲取鏈接所指的各個單個新聞的標題、來源、時間以及內(nèi)文

這里我們從特殊到一般,而用到的方法還是筆記NO.1中對select的活用,先以一個鏈接為例。

取得內(nèi)文頁面

和抓取列表頁面的初始步驟一樣,我們首先要將原材料整個的放到soup里進行一個剖析,然后再逐個提取出我們想要的元素。取得頁面的說明不再贅述。

import requests
from bs4 import BeautifulSoup
res = requests.get("http://news.sina.com.cn/c/nd/2017-01-04/doc-ifxzczff3681310.shtml")
res.encoding = "utf-8"
soup = BeautifulSoup(res.text,"html.parser")
獲取內(nèi)文標題

通過檢查工具得知標題是一個特殊的css屬性標簽,ID是artibodyTitle,通過soup的select傳回一個list,再通過取出list里內(nèi)容的方法取出來。

title= soup.select("#artibodyTitle")[0].text
取得來源和時間

本來想處理時間,時間的類是time-source,結(jié)果select回傳的結(jié)果里既有時間又有來源。使用.text也無法將之分開。
select的回傳列表結(jié)果:

[2017年01月04日09:47        

政府網(wǎng)站
]

所以這里要采用contents將時間和來源取出來。

關(guān)于.contents的幫助文檔說明

tag的.contents屬性可以將tag的子節(jié)點以列表的方式輸出。新聞的時間精確到日就可以了,對字符串進行切片處理。

time = soup.select(".time-source")[0].contents[:10]

接下來我們要思考如何取出來源,通過檢查工具我們可以看到,來源是在時間的層級之下的,這也很好的解釋了為什么用contens處理下來,和來源有關(guān)的東西并沒有發(fā)生變化,因為它是附屬其下,并且由一個span里的a tag控制的。

![Uploading time-source_539741.png . . .]

所以試試用這個把它select出來

medianame = soup.select(".time-source span a")[0].text
取得內(nèi)文

內(nèi)文位于artibody p里,同樣的方法取出。觀察由三個成分組成,

分隔符、控制符以及我們需要的文字內(nèi)容。通過strip去除控制符,再遍歷輸出

article = soup.select("#artibody p")[:-1]
獲得編輯名稱

同理,略

author = soup.select(".article-editor")[0].text.strip("責任編輯:")

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40845.html

相關(guān)文章

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

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

    Harriet666 評論0 收藏0
  • 分分鐘教你用node.js寫個爬蟲

    摘要:爬蟲介紹二爬蟲的分類通用網(wǎng)絡爬蟲全網(wǎng)爬蟲爬行對象從一些種子擴充到整個,主要為門戶站點搜索引擎和大型服務提供商采集數(shù)據(jù)。 分分鐘教你用node.js寫個爬蟲 寫在前面 十分感謝大家的點贊和關(guān)注。其實,這是我第一次在segmentfault上寫文章。因為我也是前段時間偶然之間才開始了解和學習爬蟲,而且學習node的時間也不是很長。雖然用node做過一些后端的項目,但其實在node和爬蟲方面...

    fanux 評論0 收藏0
  • 從0-1打造最強性能Scrapy爬蟲集群

    摘要:包括爬蟲編寫爬蟲避禁動態(tài)網(wǎng)頁數(shù)據(jù)抓取部署分布式爬蟲系統(tǒng)監(jiān)測共六個內(nèi)容,結(jié)合實際定向抓取騰訊新聞數(shù)據(jù),通過測試檢驗系統(tǒng)性能。 1 項目介紹 本項目的主要內(nèi)容是分布式網(wǎng)絡新聞抓取系統(tǒng)設計與實現(xiàn)。主要有以下幾個部分來介紹: (1)深入分析網(wǎng)絡新聞爬蟲的特點,設計了分布式網(wǎng)絡新聞抓取系統(tǒng)爬取策略、抓取字段、動態(tài)網(wǎng)頁抓取方法、分布式結(jié)構(gòu)、系統(tǒng)監(jiān)測和數(shù)據(jù)存儲六個關(guān)鍵功能。 (2)結(jié)合程序代碼分解說...

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

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

    zhangyucha0 評論0 收藏0
  • 基于 Node+express 爬蟲的數(shù)據(jù) API,爬一套自己的api數(shù)據(jù)(2)

    摘要:目前半島局勢緊張,朝鮮已進行了六次核試驗,被廣泛認為已經(jīng)擁有了核彈頭。另外朝鮮的導彈技術(shù)今年以來快速突破,成功試射了射程可覆蓋美國本土的洲際彈道導彈。這個版的內(nèi)容傳到互聯(lián)網(wǎng)上后,迅速刷屏,引起紛紛議論。 SplderApi2 Node-SplderApi2 第二版 基于Node 的網(wǎng)絡爬蟲 API接口 包括前端開發(fā)日報、kugou音樂、前端top框架排行、妹紙福利、搞笑視頻、段子笑話、...

    beanlam 評論0 收藏0

發(fā)表評論

0條評論

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