天天看點

Scrapy爬蟲(7)在Windows中安裝及使用Scrapy

  本次分享将介紹Scrapy在Windows系統中的安裝以及使用,主要解決的問題有:

  • 在Windows中安裝Scrapy子產品
  • 在IDE(PyCharm)中使用Scrapy
  • Scrapy導出的csv檔案亂碼

  首先介紹如何在Windows中安裝Scrapy子產品。

  在

https://www.lfd.uci.edu/~gohlke/pythonlibs/

網站中下載下傳适合自己Python版本和Windows位數的Twisted子產品(Scrapy子產品依賴于它)及Scrapy子產品, 然後放在Python安裝目錄下的Scripts檔案加下,用pip install方式安裝。

  子產品安裝完畢,輸入’scrapy -h’, 輸出資訊如下則表示Scrapy安裝成功。

  為了能随時随地地使用Scrapy, 需要将Scrapy添加到Windons系統的環境變量中,具體過程不再詳述。

  添加到環境變量後再重新開機電腦,就能随時建立Scrapy項目了,至此,我們以成功地在Windows中安裝了Scrapy,并能随時建立Scrapy項目。

  接着講述如何在PyCharm中使用Scrapy.

  在cmd中輸入’scrapy startproject bookSpider’建立bookSpider項目,再在PyCharm中将其導入,檔案結構如下:

  我們将完成完成與

Scrapy爬蟲(5)爬取當當網圖書暢銷榜

中的項目一樣的功能,隻不過,這一次是在Windows的PyCharm中進行。

  在settings.py中設定“ROBOTSTXT_OBEY = False”. 修改items.py,代碼如下:

import scrapy

class BookspiderItem(scrapy.Item):
    rank = scrapy.Field()
    name = scrapy.Field()
    author = scrapy.Field()
    press = scrapy.Field()
    price = scrapy.Field()
    comments = scrapy.Field()           

  然後,在spiders檔案夾下建立BookSpider.py,代碼如下:

import scrapy
import scrapy.cmdline
from scrapy.selector import Selector
from bookSpider.items import BookspiderItem

class bookSpider(scrapy.Spider):
    name = 'bookScrapy'
    start_urls = ['http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-%d'%i for i in range(1,26)]

    def parse(self, response):
        item = BookspiderItem()
        sel = Selector(response)

        book_list = response.css('ul.bang_list.clearfix.bang_list_mode').xpath('li')

        for book in book_list:
            item['rank'] = book.css('div.list_num').xpath('text()').extract_first()
            item['name'] = book.css('div.name').xpath('a/text()').extract_first()
            item['author'] = book.css('div.publisher_info')[0].xpath('a/text()').extract_first()
            item['press'] = book.css('div.publisher_info')[1].xpath('a/text()').extract_first()
            item['price'] = book.css('span.price_n').xpath('text()').extract_first()
            item['comments'] = book.css('div.star').xpath('a/text()').extract_first()

            yield item

def main():
    scrapy.cmdline.execute(['scrapy', 'crawl', 'bookScrapy', '-o', 'dangdangBook.csv', '-t', 'csv'])

main()           

在上述代碼中,引入scrapy.cmdline,能夠執行cmd指令,并定義了main()函數來完成cmd指令的執行。

  運作BookSpider.py,程式出錯,因為缺少win32api子產品。

  莫慌,可以在

網站中下載下傳pywin32子產品,然後安裝即可。安裝完pywin32子產品後,再次運作BookSpider.py,這次程式運作成功!

同時,該程式也生成了csv檔案。

  至此,我們以能夠在PyCharm環境中使用Scrapy.

  生成的csv檔案内容如下,

我們用WPS Excel打開并沒有亂碼,但是用Microsoft Excel打開會亂碼。解決Microsoft Excel打開亂碼的問題,可以具體參考

https://www.zhihu.com/question/21414417

.

  本次分享到此結束,歡迎大家交流~~