Web スクレイピング

web scraping

Python3で簡単なWEBスクレイピングを実行してみた件

今回:リンクを見つけてURL、タイトル、METAタグを抽出まで作成

  • 開発環境

開発ツール: Pycharm community 2018.2

言語:Python3.6.5

ライブラリ:BeutifulSoup

OS: Windows 10

基本ページへのリンクを検出して、そのリンクページを抽出してタイトルとMETAタグ(keyword, description)を抽出してみました。

Pycham を久々に使ったが立ち上がりが重たい。こんなに重たかったっけ?(パソコンの性能のせいもあるけどVisual studio code はこんなに起動時間はかからない。次回はVSC にします。)

でも新しいパソコン買いたい..(TT)。

さてプログラムですが、最初にベースのURLを決めて、その1個先のリンクを読み込んでいるだけの簡単な物です。(下記)

CODE============================

from urllib.parse import urljoin
import urllib.request
from bs4 import BeautifulSoup
import requests
url = ‘https://edition.cnn.com/’
ua = ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) ‘\
‘AppleWebKit/537.36 (KHTML, like Gecko) ‘\
‘Chrome/55.0.2883.95 Safari/537.36 ‘

req=urllib.request.Request(url, headers={‘User-Agent’: ua})
html = urllib.request.urlopen(req)

#’#リンク取得
soup = BeautifulSoup(html, ‘html.parser’)
url_items = soup.select(‘li’)

for url2 in url_items:
a = url2.a
if a is not None:
url3 = a.attrs[“href”]
url4 = urljoin(url, url3)
print(url4)
res = urllib.request.urlopen(url4)
soup = BeautifulSoup(res, ‘html.parser’)

#’#タイトルタグ
title1 = soup.find(‘title’)
print(“Title = “, title1)
#’#head
header=soup.find(“head”)
#詳細
description = header.find(“meta”, attrs={“name”: “description”})
#’# キーワード
keywords=header.find(“meta”, attrs={“name”: “keywords”})
print(“詳細 = “, description)
print(“Keyword = “, keywords)

===========================================

短いプログラムですが、結構エラーが出て、”なして?”と思う部分が多くありました。”Unknown URL” だのなんだの。

あちこちGoogle で検索するが、どれも順調に動くプログラムではない。

基本的なプログラムが順位的に最初に出現している。複雑なやり方はGoogle検索ではランクが低いように思う。

結局、サイトにと参考書を組み合わで何とか動いた。

下記は動作中の画面の一部です。

意外といっぱいリンクがありました。

次回は、これをファイルに書き出して分析とかやってみようかと思います。

おっと、バックグランドで動作していたファイル復旧プログラムが終わったので今日はここまで。

2019年3月10日

*日付を書いて思い出した。明日は東北の大震災から8年。

ここ熊本も3年前に大きい地震を経験したので地震のことは気になっています。

うちの町でも山の方の道がまだ道通ってなくて、親戚が買い物に出てこられません。

参照URL:

https://teratail.com/questions/130155

https://note.nkmk.me/python-beautiful-soup-scraping-yahoo/

#Python #PyCharm #Webscraping #development #windows #link