2015年12月29日 星期二

Python 基本爬蟲程式 + jieba 中文分詞 範例 - 以 Google 新聞為例


目標:
前篇(Python 基本爬蟲程式 (crawler) 範例 - 以 Google 新聞為例)我們先利用簡單爬蟲程式來擷取Google 新聞-焦點新聞的標題和新聞連結。現在我們就接著利用 jieba 這套中文分詞程式嘗試將截取回來的標題文字進行中文分詞。



工具:
也可以 pip 方式進行安裝:
export http_proxy=http://proxy.hinet.net:80
export https_proxy=http://proxy.hinet.net:80

pip install jieba



程式:
# coding=utf-8
# encoding=utf-8

import requests
from bs4 import BeautifulSoup
import jieba

res = requests.get("https://news.google.com")
soup = BeautifulSoup(res.text)

count = 1

for item in soup.select(".esc-body"):
    print '======[',count,']========='
    news_title = item.select(".esc-lead-article-title")[0].text
    news_url = item.select(".esc-lead-article-title")[0].find('a')['href']
    print("News Title: "+news_title)
    print("News Url: "+news_url)

    # 載入使用者自建詞庫   
    jieba.load_userdict("userdict.txt")
    # 對 news_title 進行中文分詞
    print ''
    print '  -------進行中文分詞-------'
    words = jieba.cut(news_title, cut_all=True)
    print("  Full Mode: " + "/ ".join(words))
    words = jieba.cut(news_title, cut_all=False)
    print("  Default Mode: " + "/ ".join(words))
    words = jieba.cut_for_search(news_title)
    print("  Search Engine Mode: " + ", ".join(words))
    print ''
    
    count += 1



執行結果:
======[ 41 ]=========

...

News Title: 包塑膠袋泡冰水男順利接回斷指
News Url: http://udn.com/news/story/7266/1406918-%E5%8C%85%E5%A1%91%E8%86%A0%E8%A2%8B%E6%B3%A1%E5%86%B0%E6%B0%B4-%E7%94%B7%E9%A0%86%E5%88%A9%E6%8E%A5%E5%9B%9E%E6%96%B7%E6%8C%87

  -------進行中文分詞-------
  Full Mode: 包/ 塑/ 膠/ 袋/ 泡/ 冰水/ 男/ 順/ 利/ 接回/ 斷/ 指
  Default Mode: 包塑/ 膠袋/ 泡/ 冰水/ 男順利接/ 回斷/ 指
  Search Engine Mode: 包塑, 膠袋, 泡, 冰水, 男順利接, 回斷, 指

======[ 42 ]=========
News Title: 與林口長庚同等級土城醫院開工
News Url: http://www.chinatimes.com/newspapers/20151229000446-260106

  -------進行中文分詞-------
  Full Mode: 與/ 林口/ 長/ 庚/ 同等/ 級/ 土城/ 醫/ 院/ 開/ 工
  Default Mode: 與/ 林口/ 長/ 庚/ 同等/ 級/ 土城/ 醫院/ 開工
  Search Engine Mode: 與, 林口, 長, 庚, 同等, 級, 土城, 醫院, 開工




參考資料:
#

2 則留言:

小精靈的世界 提到...

請問依照您的程式執行了,但是並沒有任何資料出現

Kenneth 提到...

google news 網頁HTML內容已經更改過,原來利用bs4找出特定tags辨識新聞內容的程式碼,也需要跟著調整。沒辦法,爬蟲程式就是需要一直跟著被爬的網站內容異動。

Hinet Proxy 服務也已經關閉,無法再利用這個proxy服務。