安裝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
標籤裏面的路由href
,a::attr(href)
:
In [3]: post.css("span a::attr(href)").extract()[0]
退出shell模式,使用exit
或quit
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的爬蟲框架。
歡迎關注,敬請點贊!
返回頂部