練習でPyQueryで大学のシラバスのデータを取得しようとしているのですが、
http://www0.osakafu-u.ac.jp/syllabus/list02.aspx?CD1=3&CD2=601
ここのページのデータだと文字化けせずに取得できるのですが、
上のページから飛んだリンクの先のページ、無数にありますが例えば
http://www0.osakafu-u.ac.jp/syllabus/detail.aspx?CD=103
ここのページをスクレイピングしようとすると日本語が文字化けします。
どちらのページもutf-8が使われていることは確認済みなのですが、
以下のコードのどこに問題があるのでしょうか。
ご存じの方がいれば回答よろしくお願いします。
import
1import chardet 2from pyquery import PyQuery as pq 3 4if __name__ == '__main__' : 5 # Htmlファイル取得 6 opener = urllib.request.build_opener() 7 request = urllib.request.Request('http://www0.osakafu-u.ac.jp/syllabus/list02.aspx?CD1=3&CD2=601') 8 html = opener.open(request).read() 9 10 for li_node in pq(html).find('li'): 11 # liノード取得 12 li_nodes = pq(li_node)('li') 13 # url 14 url = li_nodes.find('a').eq(0).attr('href') 15 URL = 'http://www0.osakafu-u.ac.jp/syllabus/'+ str(url) 16 # title 17 title = li_nodes.eq(0).text() 18 19 opener2 = urllib.request.build_opener() 20 request2 = urllib.request.Request(URL) 21 html2 = opener.open(request2).read() 22 23 for li_node2 in pq(html2).find('div#div_Yu'): 24 25 li_node2 = pq(li_node2)('div#div_Yu').find('tr').eq(1) 26 27 code = li_node2.find('span#lbl_ZYUGYO_CD').text() 28 week = li_node2.find('span#lbl_WJ_NM').text() 29 room = li_node2.find('span#lbl_ROOM_NM').text() 30 teacher = li_node2.find('span#lbl_KYOIN_NM').text() 31 32 # 表示 33 if url and title and code and week and room and teacher: 34 print('[\"'+code+'\",\"'+week+'\",\"'+title+'\",\"'+teacher+'\",\"'+room+'\",\"'+URL+'\"],') 35 36コード
それと、PyQueryの使い方の載った本とかを探してみても見当たらなかったんですが、どこか使い方がわかりやすくまとまっているページとかご存知でないでしょうか。
良ければそちらもお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/04/08 16:49
2017/04/08 18:40