資料結構化與儲存

2022-06-02 20:45:09 字數 4121 閱讀 5300

1. 將新聞的正文內容儲存到文字檔案。

2. 將新聞資料結構化為字典的列表:

3. 安裝pandas,用pandas.dataframe(newstotal),建立乙個dataframe物件df.

4. 通過df將提取的資料儲存到csv或excel 檔案。

import requests

from

bs4 import beautifulsoup

from

datetime import datetime

import re

import pandas

# 將新聞的正文內容儲存到文字檔案。

def writenewsdetail(content):

f = open('

gzccnews.txt

', '

a',encoding='

utf-8')

f.write(content)

f.close()

#一篇新聞的點選次數

def getclickcount(newsurl):

newid = re.search('

\_(.*).html

', newsurl).group(1).split('

/')[1

] clickurl = "

".format(newid)

return (int(requests.get(clickurl).text.split('

.html

')[-1].lstrip("

('").rstrip("

');"

)))#一篇新聞的全部資訊

def getnewsdetail(newsurl):

resd = requests.get

(newsurl)

resd.encoding = '

utf-8

'soupd = beautifulsoup(resd.text, '

html.parser

') # 開啟新聞詳情頁並解析

news ={}

news[

'title

'] = soupd.select('

.show-title

')[0

].text

info = soupd.select('

.show-info

')[0

].text

news['dt

'] = datetime.strptime(info.lstrip('

')[0:19], '

%y-%m-%d %h:%m:%s')

if info.find('

') > 0

news[

'source

'] = info[info.find('

'):].split()[0].lstrip('')

else

: news[

'source

'] = '

none

'if info.find('

') > 0

news[

'author

'] = info[info.find('

'):].split()[0].lstrip('')

else

: news[

'author

'] = '

none

'if info.find('

攝影:') > 0

: # 攝影:

news[

'photograph

'] = info[info.find('

攝影:'):].split()[0].lstrip('

攝影:'

)

else

: news[

'photograph

'] = '

none

'if info.find('

') > 0

news[

'auditing

'] = info[info.find('

'):].split()[0].lstrip('')

else

: news[

'auditing

'] = '

none

'news[

'content

'] = soupd.select('

.show-content

')[0

].text.strip()

writenewsdetail(news[

'content'])

news[

'click

'] =getclickcount(newsurl)

news[

'newsurl

'] =newsurl

return

(news)

#乙個列表頁的全部新聞

def getlistpage(pageurl):

res = requests.get

(pageurl)

res.encoding = '

utf-8

'soup = beautifulsoup(res.text, '

html.parser')

newslist =

for news in soup.select('li'

):

if len(news.select('

.news-list-title

')) > 0

: newsurl = news.select('

a')[0].attrs['

href

'] # 鏈結

return

(newslist)

# 新聞列表頁的總頁數

def getpagen():

res = requests.get('

')res.encoding = '

utf-8

'soup = beautifulsoup(res.text, '

html.parser')

n = int(soup.select('

.a1')[0].text.rstrip('條'

))

return (n //

10 + 1)

newstotal =

firstpageurl = '

'newstotal.extend(getlistpage(firstpageurl))

n =getpagen()

for i in range(n, n+1

): listpageurl = '

{}.html

'.format(i)

newstotal.extend(getlistpage(listpageurl))

dt =pandas.dataframe(newstotal)

dt.to_excel(

"news.xlsx")

print(dt)

5

. 用pandas提供的函式和方法進行資料分析:

提取包含點選次數、標題、**的前6行資料

print(dt[[

'click

','title

','source

']].head(6

))提取『學校綜合辦』發布的,『點選次數』超過3000的新聞。

sourcelist=['

學校綜合辦']

print(dt[dt[

'source

'].isin(sourcelist)]& dt[dt['

click

']>3000

])提取

'國際學院

'和'學生工作處

'發布的新聞。

sourcelist=['

學生工作處

','國際學院']

print(dt[dt[

'source

'].isin(sourcelist)])

資料結構化與儲存

1.將新聞的正文內容儲存到文字檔案。soup beautifulsoup res.text,html.parser content soup.select show content 0 text f open news.txt w encoding utf 8 f.write content f.c...

資料結構化與儲存

作業是 同學的,因為沒有對新聞資訊做提取,所有無法新增新聞資訊到字典。已練習pandas庫的相關使用方法,匯出excel檔案。ps 自己的 會盡快修改!import requests from bs4 import beautifulsoup from datetime import datetim...

資料結構化與儲存

1.將新聞的正文內容儲存到文字檔案。newscontent soup.select show content 0 text f open news.txt w f.write newscontent f open news.txt r print f.read 3.安裝pandas,用pandas....