スクレイピングの課題

Python

スクレイピング最新情報


注意:モジュール名と同じ名前でpyソースの名前にするのはNGだ!

文字化けまでは対応できたけど、ここからパーサー(lxml)で抽出を行う。まずはPCで、そしてラズパイでできるようにする。
windows7: Ipthon OK
VSCode(Windows7):OK

import requests

r = requests.get('http://lgs.jp/books')
r.encoding = r.apparent_encoding #ここが重要だ。おいらのホームページが化けてたからね。
print(r.text)

VS Codeって元々入っているAnacondaと環境が違うのか?モジュールをpipでインポートしないと駄目なんだけど?どちらでも同じだった・・・。venvでやったからか。そこにはまだ不足だということか。つまりvenvで作成のプロジェクトには見当たらないから入れろと。
VS Codeで新たに作成したvenvでやってみたが問題なく以前に入れたimportが有効だった。
>python -m venv  名前<–これがフォルダ名となる
>.\venv\scripts\activate <–これが要る

コード補間はできる
>.\venv\Scripts\activate

コード補間はできない
(venv) xxx>deactivate


ううむ分からないな。うまく行ってしまってるぞ・・・。venvを真面目にやらないと駄目だ。結構重要だ!

#!/usr/bin/env python
# coding: utf-8

import requests
import json

def get_weather():
	url = 'http://weather.livedoor.com/forecast/webservice/json/v1'
	payload = {'city': '120010'} # Kobe
	data = requests.get(url, params = payload).json()

	print(data['title'])
	for weather in data['forecasts']:
		print(weather['dateLabel'] + ':' + weather['telop'])

	return

if __name__ == '__main__':

	get_weather()
# coding: UTF-8
#import lxml
import urllib3
from bs4 import BeautifulSoup
url = "http://www.nikkei.com/"
html = urllib3.urlopen(url)


#target_url = 'https://lgs.jp/books/'
#r = requests.get(target_url)         #requestsを使って、webから取得
#soup = BeautifulSoup(r.text, 'lxml') #要素を抽出

#for a in soup.find_all('a'):
#      print(a.get('href'))         #リンクを表示
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import requests
import urllib3

url = "http://www.nikkei.com/"

# requestsを使うならこっち
r = requests.get(url)

# urllib3を使うならこっち
http = urllib3.PoolManager()
r = http.request('GET', url)

soup = BeautifulSoup(r.data, 'html.parser')

# タイトル要素を取得する → <title>経済、株価、ビジネス、政治のニュース:日経電子版</title>
title_tag = soup.title

# 要素の文字列を取得する → 経済、株価、ビジネス、政治のニュース:日経電子版
title = title_tag.string

# タイトル要素を出力
print(title_tag)

# タイトルを文字列を出力

Tips:lxmlは速度が早いのでおすすめです.ここで,注意すべきことは,文字化けです.
Requestsのr.encodingやr.textをそのまま使うと、文字化けしやすくなります。 回避できる方法は以下2つです.
(1)Chardetをインストールしておく
(2)BeautifulSoup()にr.contentを渡してBeautiful Soup側でデコードする
Chardetをインストールすると,大体の場合文字化けを回避できます。シンプルなのでオススメです。

No tags for this post.
タイトルとURLをコピーしました