読者です 読者をやめる 読者になる 読者になる

歩いたら休め

If the implementation is easy to explain, it may be a good idea.

【Python】urllibでURLのリストからページタイトルを取得するときに気をつけることのメモ

urllib(urllib2) Python

日常業務の中で、csvのデータに含まれるURLのリストからひたすらページタイトルを取得する必要があったので、Pythonを使って楽しました。

 

参考にしたページはこれ

技術志向 |Python でウェブページのタイトルを取得する

 

「Beautiful SoupというXML/HTMLのパーサを使うと簡単にタイトルを取得でき」ますが、個人的にちょっと詰まった点があるので一応メモ残しときます。

import urllib
import pandas as pd
import BeautifulSoup

data = pd.read_table("data.tsv", encoding="utf-8") urls = data["url"] #ひたすらアクセス&パージング for x in urls: #urlsはディレクトリ以降 temp = "http://****.co.jp" + urllib.quote(x.encode('utf-8')) urlopen = urllib.urlopen(temp) soup = BeautifulSoup.BeautifulSoup(urlopen) print x, "\t", soup.title.string

 

urllibに突っ込むためには文字列の型をunicodeからstrに統一する必要があります。ここでは「urllib.quote(x.encode('utf-8'))」と処理しました。他のやり方もありそうです。

ページタイトルが例えば「ニュース|2011年|サイト名」という形式になっており、「2011年」の部分だけを取り出したかったんですが、最終的にエクセルで出力する必要があったこともあり、そちらで処理しました。具体的にはipython notebookでprintしたやつをコピペして、エクセルのRIGHT()、LEFT()、LEN()関数で。