はじめに
相変わらず
必要なんだか不要なんだかわからないものも入ってるんですが、
とりあえず動けばOKってスタンスでやってますので、
真似するときは火傷に気をつけてネ♥
Scrapyを使う
環境を作る
現状を確認
> python -V
Python 2.7.9
> python3 -V
Python 3.4.2
色々あるでしょうけど動けばOKなので、
PythonのVersionはデフォルトでやってみます。
前準備
では、便利なez_setupとpipをインストール
その前にpythonの開発に必要なものを入れます。
順番が逆だと、
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-6I01ux/Twisted/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-Imo90a-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-6I01ux/Twisted/
みたいなエラーが出ちゃいます。
最初からPythonが入ってるのに必要なものがあると言うことは知らず、
エラーでちょっと混乱しました。(笑)
> apt -y install zlib1g-dev libssl-dev libreadline-dev libsqlite3-dev libbz2-dev libncurses5-dev libgdbm-dev liblzma-dev tk-dev zlibc
> wget https://bootstrap.pypa.io/ez_setup.py -O - | python
> easy_install pip
> pip install pyopenssl --upgrade
Scrapyをインストール
> pip install scrapy
これで準備はおわり。たぶん。
チュートリアル通りで実行
まずはチュートリアル通り
myspider.py
import scrapy
class BlogSpider(scrapy.Spider):
name = 'blogspider'
start_urls = ['https://blog.scrapinghub.com']
def parse(self, response):
for title in response.css('h2.entry-title'):
yield {'title': title.css('a ::text').extract_first()}
for next_page in response.css('div.prev-post > a'):
yield response.follow(next_page, self.parse)
実行
> scrapy runspider myspider.py
ERRORが下記の場合は、コマンド pip install pyopenssl --upgrade
が実行されてないっぽいです。
'module' object has no attribute 'OP_SINGLE_ECDH_USE'
エンジニア垂涎のアノサイトをスクレイピング
アノサイトって、会社員は職場で見ると目をつけられそうなやつです。
・・・そう、
みんなだいすきな・・・・
あれデス。
それはまた次回。
気になったらフォローでもしておいてください(笑)
あとがき
Python楽しくなってきた!