• 沒有找到結果。

第三章、 研究方法

二、 研究方法與流程

本研究大數據分析法 (Big Data Analysis)、和滯後序列分析法 (Lag-sequential analysis),主要研究處理流程如下:

(一) 以關鍵字區分色情新聞:以關鍵字來區別新聞標題,將新聞分類為色情、

30

非色情。

(二) 編寫爬文程式擷取文章:以 Python 編寫爬蟲程式,以研究者自定義的色 情關鍵字來抓出色情文章,另以新聞標題作為本研究之研究標的。

(三) 新聞網站標題擷取:將新聞網站中,五年內包含色情關鍵字的新聞全數爬 回。

(四) 確認色情新聞佔比:將各類新聞網站之色情新聞比例列表整理,分析臺灣 網路媒體是否有逐漸走向色情、小報化之趨勢。

(五) 通過GSEQ 軟體進行數據序列分析:分析色情新聞比例最高之新聞網站粉 絲專頁留言,以瞭解閱聽人對色情新聞的看法,並透過該數據探討未來該如何 改善臺灣媒體充斥色情新聞之風氣。完整研究流程圖,可見於圖 2。

31

圖 2:大數據研究流程 以關鍵字區分色情新聞

非色情新聞

從三平台當中

得出色情新聞比例最高之新聞網站 色情新聞

編寫爬文程式擷取文章

新聞網站標題擷取

確認《ETtoday 新聞雲》

色情新聞佔比

確認《蘋果新聞網》

色情新聞佔比

確認《聯合新聞網》

色情新聞佔比

色情新聞比例最高新聞網站之 粉絲專頁進行數據序列分析

32

以關鍵字區分色情新聞

本研究蒐集了 300 個色情關鍵字,相關資料請參考附錄一,並透過 Python 爬蟲 蒐集 5 年《ETtoday 新聞雲》包括 300 種色情關鍵字的新聞,並將關鍵字出現的頻 率作排序,請參考附錄二。

從附錄二可見,「性侵」新聞共有 734 則、「偷拍」新聞共有 250 則、「性愛」

新聞共有 243 則,除「性侵」外,其它色情關鍵字排序為個位數下降。而至第 59 個 色情關鍵字「一夜情」時,5 年僅剩 38 則新聞,下降幅度將近 20 則,可見該關鍵字 較少被記者所採用,故遴選至第 58 個色情關鍵字「撲倒」,作為研究色情新聞的操 作型定義。另,本文統計 5 年《ETtoday 新聞雲》包括 300 種色情關鍵字的新聞數 量,共為 10,674 則,遴選至第 58 個色情關鍵字的新聞數量為 7,555 則,已涵蓋總抓 取新聞的 71%。

故本研究從 300 個色情關鍵字中,萃取出 58 個較常見之色情關鍵字作為色情新 聞的操作型定義,包括性侵、偷拍、性愛、美腿、全裸、AV、下體、愛愛、偷吃、

爆乳、深 V、高潮、陪睡、做愛、嘿咻、A 片、變態、半球、激吻、外流、激戰、性 騷、裸照、激情、SM、女優、辣模、猥褻、賣淫、巨乳、硬上、性騷擾、強吻、不 倫、色情、脫光、渾圓、床戰、誘惑、E 奶、床戲、啪啪、性慾、低胸、裸體、濕身、

上空、嫩妹、襲胸、下海、自慰、深溝、撿屍、G 奶、D 奶、18 禁、露點、撲倒等,

新聞標題包括諸類字詞,在本研究中即被視為色情新聞,可見圖 3。

33

圖 3:色情關鍵字文字雲 本文將色情新聞關鍵字分為五大類,分述如下:

一、性犯罪

指未經雙方同意違反自由意願的性行為及有關的犯罪行為 (Sexual crime),通常 性犯罪會伴隨暴力行為發生,常見的性犯罪有強迫性行為、性騷擾、猥褻及拐賣人 口。關鍵字如性侵、偷拍、偷吃、外流、性騷、猥褻、賣淫、硬上、性騷擾、強吻、

不倫、襲胸、下海、撿屍。

二、性交

參考刑法對性交 (Sexual activity) 的定義:「稱性交者,謂非基於正當目的所為 之下列性侵入行為:一、以性器進入他人之性器、肛門或口腔,或使之接合之行為。

34

二、以性器以外之其他身體部位或器物進入他人之性器、肛門,或使之接合之行為。」

關鍵字如性愛、愛愛、做愛、嘿咻、激戰、床戰、啪啪。

三、色情

參考陳楚孟於 2001 年的定義,色情 (Pornography) 指無法律上指涉的男女情 慾,包括含性暴力與不含性暴力。關鍵字如陪睡、變態、激吻、激情、辣模、色 情、誘惑、性慾、撲倒、SM、高潮、自慰、嫩妹。

四、顯示裸露人體

參考美國密斯委員會 (The Meese Commission)4 的定義,顯示裸露人體 (Naked),

但無明顯性行為或性意圖的裸體像。關鍵字如美腿、G 奶、D 奶、E 奶、全裸、爆 乳、深 V、半球、巨乳、脫光、渾圓、低胸、裸體、上空、深溝、露點、下體、濕 身。

五、色情照片及影片

指未滿 18 歲者不適宜觀看、純粹為了激發起觀眾對性慾望、有害兒童身心健康 發展的的影視作品 (Porn) 或者片段,內容含有色情或性愛成份。關鍵字如 18 禁、

A 片、裸照、床戲、AV、女優。

本文所做的是跨媒體的比較和長時觀察,並得出色情新聞趨勢之結論,故關鍵 字的來源則相對重要,諸類關鍵字為研究者搜集近年電子報資料後,以媒體中較常 見的詞彙來做為色情新聞關鍵字的判定,其他未容納於本研究之色情關鍵字則相對 少見、或該字詞已過時、較少記者採用等。

4 美國雷根總統下令總檢察長 Edwin Meese 組成的色情調查研究委員會,史稱 The Meese Commission,其 1986 年提出的總報告書認定色情有害,並與暴力相關。

35

利用 Python 編寫爬蟲程式

本研究之爬蟲程式採用Python3 開發,並且引用以下 Python 函式庫輔助爬蟲程 式的運行。

import requests

from bs4 import BeautifulSoup import xlsxwriter

from datetime import timedelta, date import re

定義一個名為excel 的 function,用來將所有爬取的資料儲存在一個 excel 檔案,

輸入參數分別為檔名、色情新聞數量、總新聞數量、色情新聞標題,輸出為一個excel 檔案。

def excel(file, num, total_num, word):

workbook = xlsxwriter.Workbook(file) worksheet = workbook.add_worksheet()

a = ['性侵','偷拍','性愛','美腿','全裸','AV','下體','愛愛','偷吃','爆乳', '深 V','高潮','陪睡','做愛','嘿咻','A 片','變態','半球','激吻','外流', '激戰','性騷','裸照','激情','SM','女優','辣模','猥褻','賣淫','巨乳', '硬上','性騷擾','強吻','不倫','色情','脫光','渾圓','床戰','誘惑','E 奶', '床戲','啪啪','性慾','低胸','裸體','濕身','上空','嫩妹','襲胸','下海', '自慰','深溝','撿屍','G 奶','D 奶','18 禁','露點','撲倒']

b = num

c = ['總數', total_num]

total = 0 for i in b:

total += i

36

d = ['色情新聞總數', total]

array = [a, b, c, d] + word row = 0

for col, data in enumerate(array):

worksheet.write_column(row, col, data) workbook.close()

定義一個名為daterange 的 function,用來取得兩個指定日期之前的所有日期,

輸入為開始日期、結束日期,輸出為開始日期至結束日期的日期範圍區間,可以用 迴圈來取得所有日期。

def daterange(date1, date2):

for n in range(int((date2 - date1).days) + 1):

yield date1 + timedelta(n)

以上兩個function 是本爬蟲程式之通用函式,可適用於各家新聞網的爬蟲處理,

將其獨立出來以精簡程式碼並優化程式結構。

接著將《蘋果新聞網》、《ETtoday 新聞雲》、《聯合新聞網》的爬蟲做更進一 步的詳細分析,針對這三家新聞網定義三個function,用來快速的呼叫爬蟲功能,輸 入為開始日期、結束日期、資料儲存位置。

def apple(start_dt, end_dt, file):

def ettoday(start_dt, end_dt, file):

def udn(start_dt, end_dt, file):

在主程式呼叫的部分,定義開始日期、結束日期、檔案名稱,針對近五年每年 的1 月 1 日至 12 月 31 日產生一份 excel 統計表,《聯合新聞網》從 2016 年才開始 有資料,所以只有四年的資料。

apple(date(2019, 1, 1), date(2019, 12, 31), "D:\\apple2019.xlsx") apple(date(2018, 1, 1), date(2018, 12, 31), "D:\\apple2018.xlsx")

37

apple(date(2017, 1, 1), date(2017, 12, 31), "D:\\apple2017.xlsx") apple(date(2016, 1, 1), date(2016, 12, 31), "D:\\apple2016.xlsx") apple(date(2015, 1, 1), date(2015, 12, 31), "D:\\apple2015.xlsx") ettoday(date(2019, 1, 1), date(2019, 12, 31), "D:\\ettoday2019.xlsx") ettoday(date(2018, 1, 1), date(2018, 12, 31), "D:\\ettoday2018.xlsx") ettoday(date(2017, 1, 1), date(2017, 12, 31), "D:\\ettoday2017.xlsx") ettoday(date(2016, 1, 1), date(2016, 12, 31), "D:\\ettoday2016.xlsx") ettoday(date(2015, 1, 1), date(2015, 12, 31), "D:\\ ettoday2015.xlsx") udn(date(2019, 1, 1), date(2019, 12, 31), "D:\\udn2019.xlsx")

udn(date(2018, 1, 1), date(2018, 12, 31), "D:\\udn2018.xlsx") udn(date(2017, 1, 1), date(2017, 12, 31), "D \\udn2017.xlsx") udn(date(2016, 1, 1), date(2016, 12, 31), "D:\\udn2016.xlsx")

一、 《蘋果新聞網》爬蟲

(一) 網站結構分析

《蘋果新聞網》可以取得的歷年資料從2003 年至今,取近五年為本研究範圍,

即2016 年 1 月 1 日至 2019 年 12 月 31 日之間所有新聞為總新聞數,並從所有新聞 之標題找出包含色情新聞關鍵字之數量。

分析《蘋果新聞網》後發現能以下方網址結構,找出過去每日的總新聞列表:

https://tw.appledaily.com/appledaily/archive/20190125,只需要將網址最後面之日期替 換,即可查詢到指定日期新聞列表。

透過 Python 爬蟲程式將所有新聞標題抓出,並比對 58 個色情新聞關鍵字,若 是標題內包含色情新聞關鍵字,即視為色情新聞,並針對每年所有數據之總新聞數、

色情新聞關鍵字、色情新聞標題數量、色情新聞標題文字做進一步的分析。

(二) 程式碼結構分析 首先定義4 個變數:

38

1. key: 紀錄 58 個色情新聞關鍵字的陣列。

2. num: 紀錄包含色情新聞關鍵字的新聞標題總數。

3. word: 紀錄每個包含色情新聞關鍵字的新聞標題。

4. totalnum: 紀錄總新聞數量。

key = ['性侵','偷拍','性愛','美腿','全裸','AV','下體','愛愛',…]

num = [0, 0, 0, 0, 0, 0, 0, 0,...]

word = [['性侵'],['偷拍'],['性愛'],['美腿'],['全裸'],['AV'],['下體'],['愛愛'],…]

totalnum = 0

定義一個for 迴圈,針對每日的新聞列表爬取資料,並且用 dt 來取得每日日期 格式,迴圈內的程式碼用來處理每日所有新聞及判斷色情新聞關鍵字。

1. url: 組成每日新聞總覽的網址格式,strftime 可以調整日期格式。

2. headers: 模擬搜尋引擎,避免被視為惡意攻擊。

3. page: 送出網址請求,取得每日新聞總覽內容。

4. page.encoding: 將網站內容編碼轉為 utf-8 格式,避免中文亂碼。

5. page_info: 取得網站純文字內容,排除不重要資料。

6. page_bf: 將 page_info 轉換成 html 格式,方便抓取內容。

7. titles: 找出新聞總覽區塊,定義在 article 標籤,id 為 coverstory。

8. title: 定義一個空陣列,用來暫時存放所有新聞標題。

9. for 迴圈抓出每一項新聞標題的文字,透過 ul 以及 a 來當作爬蟲依據,a 標 籤內的 title 會記錄新聞標題的純文字,判斷如果 title 有文字,就紀錄在 title 陣列內,如此一來可以明確抓出所有標題的純文字在同一個陣列中。

10. totalnum: 紀錄所有標題總數。

11. for 迴圈判斷所有標題是否有包含所有色情關鍵字,如果有包含,就將此 標題視為色情新聞,將標題紀錄在 word 陣列之對應關鍵字的位置,並且 在num 陣列增加一筆色情新聞數量之對應關鍵字的位置。

39

for dt in daterange(start_dt, end_dt):

url = "https://tw.appledaily.com/appledaily/archive/" + dt.strftime("%Y%m%d")

headers = {'User-Agent': 'SE 2.X MetaSr 1.0'}

page = requests.get(url=url, headers=headers) page.encoding = 'utf-8'

page_info = page.text

page_bf = BeautifulSoup(page_info, 'html.parser') titles = page_bf.find(["article"], id="coverstory") title = []

print(url)

for a in page_bf.find_all("ul",class_="fillup"):

for b in a.find_all("a"):

if b.get('title') is not None:

title.append(b.get('title')) totalnum += len(title)

for i in range(len(key)):

for j in range(len(title)):

if key[i] in title[j]:

word[i].append(title[j]) num[i] += 1

最後將開始日期至結束日期的所有資料都存到excel 內。

excel(file, num, totalnum, word)

二、 《ETtoday 新聞雲》爬蟲

40

(一) 網站結構分析

《ETtoday 新聞雲》可以取得的歷年資料從 2011 年至今,取近五年為本研究範 圍,即2016 年 1 月 1 日至 2019 年 12 月 31 日之間所有新聞為總新聞數,並從所有 新聞之標題找出包含色情新聞關鍵字之數量。

分析《ETtoday 新聞雲》後發現能以下方網址結構,找出過去每日的總新聞列表:

https://www.ettoday.net/news/news-list-2019-01-25-0.htm,只需要將網址最後面之日期 替換,即可查詢到指定日期新聞列表。

透過 Python 爬蟲程式將所有新聞標題抓出,並比對 58 個色情新聞關鍵字,若 是標題內包含色情新聞關鍵字,即視為色情新聞,並針對每年所有數據之總新聞數、

色情新聞關鍵字、色情新聞標題數量、色情新聞標題文字做進一步的分析。

(二) 程式碼結構分析 首先定義4 個變數:

1. key: 紀錄 58 個色情新聞關鍵字的陣列。

1. key: 紀錄 58 個色情新聞關鍵字的陣列。

相關文件