日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取新闻网站内容_python爬虫案例:抓取网易新闻

發布時間:2023/12/10 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取新闻网站内容_python爬虫案例:抓取网易新闻 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

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

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

上面的連接也就是我們本次抓取所要請求的地址。

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

requests

json

BeautifulSoup

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

由于我們采集的是api接口,它的格式為json,所以要用到json庫來解析。BeautifulSoup是用來解析html文檔的,可以很方便的幫我們獲取指定div的內容。

下面開始編寫我們爬蟲:

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

import json

import requests

from bs4 import BeautifulSoup

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

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

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

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

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

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

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

作者位置為:class = "ep-editor" 的 span 標簽。

正文位置為:class = "post_text" 的 div 標簽。

下面試采集這三個內容的代碼:

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

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

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

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

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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python爬取新闻网站内容_python爬虫案例:抓取网易新闻的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。