2018年2月4日:python
2018年1月:git
將更新提上日程,在測試二維碼登陸.先上個半成品github
原先密碼登錄的如今基本上不能用了.由於我的頁面多了一種反爬手段,其次就是跳出二維碼頁面.web
上面這些問題,將在以後儘可能解決.sql
大概在2017年11月~12月的樣子:json
開始出現跳出驗證碼頁面了.緣由應該是支付寶反爬的模型加強了.框架
這段時間維護時間很少,都是我的測試沒有更新代碼上去scrapy
2017年10月 參加DoraHacks時:ide
系統版本:Win10 x64測試
Python版本:3.4.4
Python庫版本列表:
Pillow: 5.0.0
Scrapy:1.4.0
selenium:3.8.1
requests:2.18.4
pymongo:3.6.0
python_dateutil:2.6.1
Ps: 必定要配好Python的環境,否則Scrapy的命令可能會跑不起來
# 項目根目錄下,打開命令行
pip install -r requirements.txt
複製代碼
# 項目根目錄下,啓動爬蟲
scrapy crawl AlipaySpider -a username="你的用戶名" -a password="你的密碼"
# 必選參數
-a username=<帳號>
-a password=<密碼>
# 可選參數
-a option=<爬取類型>
# 1 -> 購物; 2 -> 線下; 3 -> 還款; 4 -> 繳費
# 這裏面有四種類型數據對應四種不一樣的購物清單
#####################################################
# 實驗版本
scrapy crawl AlipayQR
# 暫時尚未參數, 能登錄到我的頁面了.
複製代碼
吐槽一下: 這點可能沒啥好說,由於代碼是從本身以前寫的用非框架的代碼搬過來的,搬過來以後主要就是適應Scrapy這個框架,理解框架的意圖和執行順序以及項目的結構,而後進行兼容和測試。
我這個項目主要就用到Spider模塊(即爬蟲模塊),Pipeline和item(即寫數據的管道和實體類)
Downloader的那塊基本沒作處理,由於核心仍是在用selenium + webdriver,解析頁面用的是Scrapy封裝好的Selector.
Scrapy具體的流程看下圖: (從官方文檔搬過來的)
題外話模塊: 上一段講到了一個Selector,這個是東西是Scrapy基於lxml開發的,可是真正用的時候其實和lxml的selector有點區別.
舉個例子吧:
# 兩段相同的標籤獲取下面的文字的方式
# lxml
name = str(tr.xpath('td[@class="name"]/p/a/text()').strip()
# Scrapy
name = tr.xpath('string(td[@class="name"]/p/a)').extract()[0].strip()
複製代碼
兩行代碼對同一個標籤的文字提取的方法有些不同,雖然到最後的結果同樣。
lxml中有一個"string(.)"方法也是爲了提取文字,可是這個方法是要在先指定了父節點或最小子節點後再使用,就能夠獲取父節點如下的全部文字或最小子節點對應的文字信息.
而Scrapy的Selector則能夠在"string(.)"裏面寫入標籤,方便定位,也很清晰的看出是要去獲取文字信息.
具體區別其實能夠對比下我非框架下的和Scrapy框架下的代碼,裏面用xpath定位的方式有點不同.