2014/08/03

スクレイピングとWebクローリングの出来るフレームワークScrapyをCentOS6で試してみました。

Scrapyは、ウェブサイトをクロールし、そのページから構造化データの抽出が出来ます。高速で高レベルの画面スクレイピング、Webクローリングフレームワークです。Scrapyは全てPythonで書かれています。


http://scrapy.org/

CentOS6にScrapyの環境を用意して、下記の動画のチュートリアルを試しました。


ソースは、下記のページで公開されています。 
Scraping Web Pages With Scrapy 

 このソースで行っているのは、Craigslistの「NPO」のカテゴリで表示されているリストのタイトルと、そのURLを取得するというものです。

Craigslistとは - IT用語辞典 e-Words
実際に処理をする対象のページ 

データを実際に取得して格納をするスクリプト   
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from craigslist_sample.items import CraigslistSampleItem

class MySpider(BaseSpider):
  name = "craig"
  allowed_domains = ["craigslist.org"]
  start_urls = ["http://sfbay.craigslist.org/npo/"]

  def parse(self, response):
      hxs = HtmlXPathSelector(response)
      titles = hxs.select("//span[@class='pl']")
      items = []
      for titles in titles:
          item = CraigslistSampleItem()
          item ["title"] = titles.select("a/text()").extract()
          item ["link"] = titles.select("a/@href").extract()
          items.append(item)
      return items

スクリプトを動かして結果をCSVに保存します。
$ scrapy crawl craig -o items.csv -t csv

2014/08/03 21:20 に実行して保存されたCSVの中身を確認
$ more items.csv
link,title
/sfc/npo/4599976929.html,✦FULL-TIME AND PART-TIME JOBS! EARN AVG OF $11-16/HR
/eby/npo/4599904588.html,█ CAMPAIGN STAFF POSITION to FIGHT FAC
/eby/npo/4599659276.html,"!!!What's in Your Water? Clean Water Action, Now Hiring!!"
/scz/npo/4599590859.html,*I'm an ACTIVIST. What Kind of Progressive Are You? Click To Find Out!
/eby/npo/4599575085.html,▲I'm an ACTIVIST. What Kind of Progressive Are You? Click To Find Out!
/sfc/npo/4599499777.html,FULL-TIME AND PART-TIME JOBS WITH CALPIRG! EARN AVG OF $11-16/HR
/eby/npo/4599307693.html,Join our winning team of rad activists!  PT phone work 12$ hr
/sfc/npo/4599088866.html,Resident Services Coordinator
/sfc/npo/4599069160.html,Stonestown Family YMCA - After School Program Leader
/eby/npo/4599024935.html,▲LGBT EQUALITY SUMMER JOBS W/ADVANCEMENT OPPORTUNITIES  $4700-7500
以下続く

Scrapyを使えば、クローリング、収集したデータの処理、整形まで、複雑な処理が簡単に出来そうです。

0 件のコメント:

人気の投稿 (過去 30 日間)