序
- 抓取圖片並顯示在item里:

下面來正式進入本文的主題,抓取鏈家成交房產的信息並顯示房子圖片:
1. 創建一個scrapy project:
scrapy startproject lianjia_shub
這時會在當前文件夾下創建如下文件夾:
│
└─lianjia_shub
│ items.py
│ pipelines.py
│ settings.py
│ __init__.py
│
└─spiders
__init__.py
2. 定義item:
class LianjiaShubItem(scrapy.Item):
id = Field()
title = Field()
price = Field()
addr = Field()
link = Field()
# 這里需要注意image這個字段
# image字段用來存儲抓取到的<img>,這樣就可以在ScrapingHub的Item Browser里查看圖片了
# 而且這個名字必須是image,不然是不會顯示圖片的
image = Field()
3. 創建spider:
cmd里運行以下命令:
scrapy genspider lianjia http://bj.lianjia.com/chengjiao
定義spider:
import scrapy
from scrapy.spiders.init import InitSpider
from lianjia_shub.items import LianjiaShubItem
class LianjiaSpider(InitSpider):
name = " lianjia "
allowed_domains = [ " http://bj.lianjia.com/chengjiao/ "]
start_urls = []
def init_request(self):
return scrapy.Request( ' http://bj.lianjia.com/chengjiao/pg1/ ', callback=self.parse_detail_links)
def parse_detail_links(self, response):
house_lis = response.css( ' .clinch-list li ')
for house_li in house_lis:
link = house_li.css( ' .info-panel h2 a::attr("href") ').extract_first().encode( ' utf-8 ')
self.start_urls.append(link)
return self.initialized()
def parse(self, response):
house = LianjiaShubItem()
house[ ' link '] = response.url
house[ ' id '] = response.url.split( ' / ')[-1].split( ' . ')[0]
image_url = response.css( ' .pic-panel img::attr(src) ').extract_first()
# image是一個list。在Scrapinghub中顯示的時候會把image里所有的圖片顯示出來。
house[ ' image '] = [image_url, image_url]
house[ ' title '] = response.css( ' .title-box h1::text ').extract_first()
house[ ' addr '] = response.css( ' .info-item01 a::text ').extract_first()
house[ ' price '] = response.css( ' .love-money::text ').extract_first()
return house
4. 下面我們就需要到Scrapinghub(http://scrapinghub.com/platform/)上注冊一個賬戶。
5. 安裝Scrapinghub客戶端命令Shub:
pip install shub
6. 在Scrapinghub上創建一個project,並找到對應的api key:
7. 使用api key和project id登錄shub:
shub login
手動輸入api key之后會創建一個scrapinghub的配置文件scrapinghub.yml:
default: lianjia_shub
8. 把spider部署到Scrapinghub:
shub deploy <projectid>
9. 在Scrapinghub上運行spider:
Scrapinghub上的job對應於我們定義的spider:
在彈出的對話框中選擇Spider的優先級后運行。(如果不想等太長時間的話可以設置成 Highest):
10. 執行結束后可以點擊items查看抓取到的信息:
What's Next:
1. 根據需要更改spider的配置:
Spiders -> Settings -> Project Settings
2. 設置定時抓取:
Periodic Jobs -> Add periodic job