Posted at

Debian8(jessie)でScrapyを動くようにし、エンジニアが垂涎しそうなスクレイピングをしてみる

More than 1 year has passed since last update.


はじめに


相変わらず

必要なんだか不要なんだかわからないものも入ってるんですが、

とりあえず動けば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楽しくなってきた!