資料結構化與儲存

2022-06-04 09:03:05 字數 2800 閱讀 5540

# -*- coding: utf-8 -*-

import requests

import re

import pandas

from bs4 import beautifulsoup

from datetime import datetime

def getpagen(pageurl):

res1 = requests.get(pageurl)

res1.encoding = "utf-8"

soup = beautifulsoup(res1.text, "html.parser")

page = soup.select('#pages .a1')[0].text.strip('條')

n = int(int(page)/10)

return n

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

def writenewsdetail(content):

f=open('gzcc.txt','a',encoding='utf-8')

f.write(content)

f.close()

# 8. 將獲取新聞詳情的**定義成乙個函式 def getnewdetail(newsurl):

def getnewdetail(newsurl):

res1 = requests.get(newsurl)

res1.encoding = "utf-8"

soup = beautifulsoup(res1.text, "html.parser")

news={}

news['title'] = soup.select('.show-title')[0].text

# print(news['title'])

info = soup.select('.show-info')[0].text

# str = '2018-03-30 17:10:12'

news['datetimes'] = str(datetime.strptime(dt, '%y-%m-%d %h:%m:%s'))

newsid = re.search('\_(.*).html', newsurl).group(1).split('/')[-1]

clickurl = ''.format(newsid)

resc = requests.get(clickurl)

news['click'] = int(resc.text.split('.html')[-1].lstrip("('").rstrip("');"))

if source > 0:

if author > 0:

y = info.find('攝影:')

if y > 0:

news['camera'] = info[info.find('攝影:'):].split()[0].lstrip('攝影:')

# print('攝影:', news['u'])

news['newsurl'] = newsurl

news['content'] = soup.select('#content')[0].text.strip()

writenewsdetail(news['content'])

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']

# print(newslist)

return newslist

newstotal =

pageurl = ''

getlistpage(pageurl)

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

newstotal.extend(getlistpage(pageurl))

n = getpagen(pageurl)

for i in range(2,3):

listpageurl = '{}.html'.format(i)

newstotal.extend(getlistpage(listpageurl))

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

df = pandas.dataframe(newstotal)

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

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

print(df[['click','title','sources']].head(6))

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

print(df[(df['click']>3000)&(df['sources']=='學校綜合辦')])

# 提取'國際學院'和'學生工作處'發布的新聞。

sou = ['國際學院','學生工作處']

print(df[df['sources'].isin(sou)])

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

df.to_excel('gzcc456.xlsx')

資料結構化與儲存

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....