LoginSignup
11
14

More than 5 years have passed since last update.

Pythonで記事をスクレイピングしてCSVに落そう

Last updated at Posted at 2018-10-30

はじめに

前回書いた、
画像をスクレイピングして保存までをPythonでやってみた[初心者向け]
の記事を通して、スクレイピングを理解した訳ですが、今度はCSVに落とすまでを行ってみました。

今回のスクレイピングもPythonを使用して行いました。
Seleniumという自動でブラウザを操作してくれるライブラリを使用してスクレイピングを行いました。

Seleniumがどういうライブラリなのかわからない方はこちらを参考にしてみて下さい。
[参考]
https://techacademy.jp/magazine/18690

スクレイピング

sample.py
from selenium import webdriver
import pandas as pd

browser = webdriver.PhantomJS()
url = '対象ページのURL'
browser.get(url)
df = pd.DataFrame({'title':[], 'date':[], 'like':[]})

while True:
    if len(browser.find_elements_by_class_name('要素')) > 0:
        posts = browser.find_elements_by_class_name('要素')
        for post in posts:
            title = post.find_element_by_css_selector('要素').text
            date = post.find_element_by_css_selector('要素').text
           like = post.find_element_by_css_selector('要素').text
            series = pd.Series([title, date, like],['title', 'date', 'bookmarks'])
            print(series)
            df = df.append(series, ignore_index=True)

        link = browser.find_element_by_link_text("要素")
        link.click()
        browser.implicitly_wait(10)
    else:
        break

df['like'] = pd.to_numeric(df['like'].str.replace('users', ''))
df = df.sort_values(['like'], ascending=False).reset_index(drop=True)
df.to_csv('hoge.csv')
print('完了')

Webサイトの検索結果などで複数の記事が存在する場合を想定して書いたコードになります。

DataFrameでは、欲しいデータの種類だけ追加します。
今回の場合、私は記事のタイトルと、投稿日、良いね数、が欲しかったので、3つにしています。

find_element_by_〇〇では、Googleのデベロッパーツールを使用して、取得要素を選定しました。

pandasでソートをした事が無かったので、下記の記事は参考になりました。
ソートする値が、文字列なのか数値なのかが大切です。
[参考]
https://qiita.com/y_sk71/items/c22f47bd4ddc1dc46dc8

find_element_by_〇〇に関してはこちらが参考になりました。
elementelementsで異なるので注意です。
[参考]
https://kurozumi.github.io/selenium-python/locating-elements.html

まとめ

スクレイピングは、色々なシチュエーションで役立つし、覚えて置いて損は無い技術である事は間違い無いと思います。難しくはないので、やった事がない方は、ぜひ挑戦してみて下さい。

おまけ

Twitterやってます!外部のエンジニアの方ともどんどん繋がりたいと考えていますので、是非フォローして頂ければと思います!@Tatsuo96
p.s.今年の2月までは溶接職人でした。ガッツ系エンジニアとしてやらせて頂いております。

11
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
14