Scrapy 爬蟲的使用步驟
- 創建一個工程
- 編寫Spider
- 編寫Item Pipeline
- 優化配置策略
①Request類:向網絡中提交請求
class scrapy.http.Request()
- Request對象表示一個HTTP請求。
- 由Spider生成,由Downloader執行。
Resquest類
②Response類:網絡中爬取內容的封裝類
class scrapy.http.Response()
- Response對象表示一個HTTP響應。
- 由Downloader生成,由Spider處理
Response類
③Item類: 由Spider產生的信息封裝的類
class scrapy.item.Item()
- Item對象表示一個從HTML頁面中提取的信息內容。
- 由Spider生成,由Item Pipeline處理。
- Item類似字典類型,可以按照字典類型進行操作
Scrapy爬蟲提取信息的方法
- Beautiful Soup
- lxml
- re
- XPath Selector
- CSS Selector
記一個小?:
首先打開Pycharm, 進入Terminal:
然後cd到文件目錄,輸入命令:
scrapy startproject python demo
然後我們回到工程文件的目錄發現自動生成了一堆文件, 簡單介紹一下:
demo:外層目錄
scrapy.cfg:部署Scrapy爬蟲的配置文件
python:Scrapy框架的用戶自定義Python代碼
__init_.py:初始化腳本
items.py:Items代碼模板(繼承類)
middlewares.py:Middlewares代碼模板(繼承類)
pipelines.py:Pipelines代碼模板(繼承類)
settings.py:Scrapy爬蟲的配置文件,優化爬蟲功能需要修改其中的配置項
spiders:存放建立的爬蟲
__init_.py:初始化腳本
_pycache_:緩存
_pycache_:緩存
然後再到Terminal中,進入到demo目錄下
輸入
scrapy genspider ex berryqiu.github.io
這樣我們就生成了一個名爲ex的爬蟲。可以來到目錄看一下:
打開它,並修改如下:
# -*- coding: utf-8 -*-
import scrapy
class ExSpider(scrapy.Spider):
name = 'ex'
allowed_domains = ['berryqiu.github.io'] # 只能爬取這個域名以下的相關鏈接
start_urls = ['https://berryqiu.github.io/pages/q.html'] # 以列表形式表示所要爬取的初始頁面
def parse(self, response): # parse()用於處理響應,解析內容形成字典發現新的URL爬取請求,self是面向對象類所屬關係的標記,response表示從網絡中返回內容或所存儲的對象
fname = response.url.split('/')[-1] # 用響應的URL中提取名字
#將響應的內容保存爲文件
with open(fname, 'wb') as f:
f.write(response.body)
self.log('Save file %s.' % fname)
pass
此時我們查看文件目錄, 就會多一個名爲q.html