1. Cmd命令行創建項目
創建項目命令:
scrapy startproject [項目名]
Items定義要爬取的東西;spiders文件夾下可以放多個爬蟲文件;pipelines爬蟲後處理的文件,例如爬取的信息要寫入數據庫;settings項目設置
2. Scrapy常用模板
Scrapy-般通過指令管理爬蟲項目,常用的指令有:
(1) startproject創建爬蟲項目
basic基礎模板(最常用);crawl通用爬蟲模板;csvfeed爬取csv格式的模板;xmlfeed爬取xml格式的模板
(2) genspider -I查看爬蟲模板
(3)genspider -t模版爬蟲文件名域名創建爬蟲
(4)crawl運行爬蟲
(5)list查看有哪些爬蟲
3. Scrapy爬蟲編寫基礎
編寫一個Scrapy爬蟲項目,一般按照如下流程進行:
(1) 創建爬蟲項目
(2) 編寫items
(3) 創建爬蟲文件
(4) 編寫爬蟲文件
(5) 編寫pipelines
(6) 配置settings
4. 使用scrapy編寫阿里文學數據
-
第一步:定義目標
在items中定義目標
-
第二步:完善爬蟲文件的編寫
yield這裏轉交給pipelines文件處理
糾正一下:圖中第①點我的目錄應該是ali_first
(運行之後報錯才發現,這個筆記是邊做項目邊寫的,懶得重新截圖編輯了)
-
第三步:開啓pipelines
修改settings文件
-
第四步:完善pipelines文件內容
5. 使用scrapy編寫噹噹網商品數據
目標站點:噹噹(http://category.dangdang.com/pg1-cp01.54.06.00.00.00.html)
需求數據:商品標題、鏈接評論數等數據
要求:自動翻頁並自動寫入數據庫
-
對比翻頁鏈接:
http://category.dangdang.com/pg1-cp01.54.06.00.00.00.html
http://category.dangdang.com/pg2-cp01.54.06.00.00.00.html
-
第一步:items文件定義目標
-
第二步:完善爬蟲文件
# -*- coding: utf-8 -*-
import scrapy
from dangdang_sed.items import DangdangSedItem
from scrapy.http import Request
class FirstSpider(scrapy.Spider):
name = 'first'
allowed_domains = ['category.dangdang.com']
start_urls = ['http://category.dangdang.com/pg1-cp01.54.06.00.00.00.html/']
def parse(self, response):
item = DangdangSedItem() # 創建對象
# 獲取數據
item["title"] = response.xpath('//a[@name="itemlist-title"]/@title').extract()
item["href"] = response.xpath('//a[@name="itemlist-title"]/@href').extract()
item["comment"] = response.xpath('//a[@name="itemlist-review"]/text()').extract()
# print('書名:\n'+str(item["title"]))
# print(item["title"])
yield item
# 翻頁
for i in range(0,10):
url = "http://category.dangdang.com/pg"+str(i+2)+"-cp01.54.06.00.00.00.html"
yield Request(url,callback = self.parse)
-
第三步:開啓pipelines
修改settings文件
ITEM_PIPELINES = {
'dangdang_sed.pipelines.DangdangSedPipeline': 300,
}
-
第四步:下載pymysql
使用命令:pip install pymysql
異常:
根據提示輸入命令更新pip安裝包:
python -m pip install --upgrade pip
再次出現異常,更新失敗:
通過百度看到更新方法:
python -m pip install --upgrade pip -i https://pypi.douban.com/simple
再次下載安裝pymysql庫
修改pymysql設置
(1)找到pymysql路徑下的connections.pyi文件
(2)修改connections.pyi文件中的charset值,避免出現亂碼問題
-
第五步:準備數據庫
這裏用vavicat for mysql工具創建數據庫和數據表
數據庫:dangdang 數據表:boods
在mysql命令窗口中通過密碼登錄,查看數據庫可以看到剛纔創建的數據庫dangdang
-
第六步:完善pipelines文件內容
-
第七步:運行爬蟲文件並查看數據庫存儲結果
運行first.py文件,同時查看數據庫中是否有數據插入
通過vavicat for mysql工具查看dangdang數據庫的boods表格數據