2015年12月28日 星期一

Python 基本爬蟲程式 (crawler) 範例 - 以 Google 新聞為例

目標:以 Google 新聞網頁為例,擷取焦點新聞各主題新聞標題與連結網址。

Google 新聞-焦點新聞 範例
以 InfoLite (Chrome擴充工具) 可以發現我們要擷取的資料在網頁原始碼中的 .esc-body 和 .esc-lead-article-title 兩個 class  中可以找到。



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

pip install requests
pip install BeautifulSoup4



程式:
# coding=utf-8

import requests
from bs4 import BeautifulSoup

res = requests.get("https://news.google.com")
soup = BeautifulSoup(res.text)
print soup.select(".esc-body")

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
    print news_url
    count += 1


Python3 版本 (2017/04/02新增)
#!/usr/bin/env python3

# coding=utf-8
# -*- coding: utf8 -*-

from urllib.request import urlopen
from bs4 import BeautifulSoup

res = urlopen("https://news.google.com")
soup = BeautifulSoup(res, "html.parser")
#print soup.select(".esc-body")

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)
    print(news_url)
    count += 1

執行結果:
======[ 1 ]=========
美河市案宣判柯P解讀:2個小官非常賤
http://www.chinatimes.com/realtimenews/20151228002594-260401
======[ 2 ]=========
北海道巴士對撞11台灣客受傷【更新】
http://www.cna.com.tw/news/firstnews/201512285015-1.aspx
======[ 3 ]=========
邱毅再爆816專案小英研究兩國論索262萬
http://www.chinatimes.com/realtimenews/20151228002822-260401
======[ 4 ]=========
芝加哥警射殺2非裔家屬淚訴停止暴力
http://www.cna.com.tw/news/firstnews/201512285013-1.aspx

...

======[ 40 ]=========
食安再爆!素食也不安全蒟蒻竟摻工業用碱粉
http://www.uho.com.tw/hotnews.asp?aid=39330
======[ 41 ]=========
(用錯染髮劑增膀胱癌風險,3大守則安心變色/圖片取自優活健康網)
http://www.uho.com.tw/hotnews.asp?aid=39317
======[ 42 ]=========
當市長完成創傷急救體系柯P感概想到朱立倫
http://news.ltn.com.tw/news/politics/breakingnews/1553878



延伸閱讀:




參考資料:



#

沒有留言: