“黑客”入門——爬蟲scrapy初體驗

歡迎關注,敬請點贊!

安裝scrapy

pip install scrapy

如果需要安裝C++,可以先下載安裝twisted:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted(選擇對應的python版本)。

創建項目

需要在項目根目錄下,如D:\Python\spider>

運行:scrapy startproject 項目名(如:lab),D:\Python\spider>scrapy startproject lab

啓動爬蟲

進入項目內:cd 項目名,D:\Python\spider>cd lab

scrapy genspider 爬蟲名 爬取網址(不需要綴http://)

以SCRAPY爬蟲實驗室爲例:scrapy genspider lab_scrapy lab.scrapyd.cn

調整設置

對settings.py文件中的爬蟲君子協定和延時進行設置,也可以忽略。

# Obey robots.txt rules 爬蟲君子協定(暫調爲False)
ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 3  # 延時

shell模式

返回頂部
可以使用shell模式,嘗試不熟悉的命令,減少代碼報錯頻率。

scrapy shell 爬取網址

以SCRAPY爬蟲實驗室爲例:D:\Python\spider>scrapy shell http://lab.scrapyd.cn

在shell模式下,可以嘗試css選擇器的使用:

獲取第一個class爲"quote.post"的div盒子:

In [1]: post = response.css("div.quote.post")[0]

進一步獲取裏面的text,獲取文字內容的方法是::text,不再是text()

In [2]: post.css("span.text::text").extract()[0]

獲取a標籤裏面的路由hrefa::attr(href)

In [3]: post.css("span a::attr(href)").extract()[0]

退出shell模式,使用exitquit

In [4]: exit

crawl模式

scrapy crawl 爬蟲名

以SCRAPY爬蟲實驗室爲例:scrapy crawl lab_scrapy

lab_scrapy.py的代碼如下:

import scrapy


class LabScrapySpider(scrapy.Spider):
    name = 'lab_scrapy'
    allowed_domains = ['http://lab.scrapyd.cn']
    start_urls = ['http://lab.scrapyd.cn/']

    def parse(self, response):
        posts = response.css("div.quote.post")
        for post in posts:
            print(post.css("span.text::text").extract()[0])
            print(post.css("span a::attr(href)").extract()[0])

總結

scrapy是一個類似於django的爬蟲框架。

歡迎關注,敬請點贊!
返回頂部

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章