基本任務:
I 搭建python開發環境
II 寫一個簡單的網路爬蟲, 在某一個網站將一部小說各章節(一般是一個章節一個網頁)粘貼到一個文字檔內。
1 首先瞭解幾個概念1.1 網路爬蟲
網路爬蟲是一個自動提取網頁的程式, 它為搜尋引擎從萬維網上下載網頁, 是搜尋引擎的重要組成。
網路爬蟲可以類比流覽器流覽網頁, 自動批量下載網路資源(能夠訪問到的, 放在網路服務器的檔)。
傳統爬蟲從一個或若干初始頁面的URL開始, 獲得初始頁面上的URL, 在抓取網頁的過程中, 不斷從當前頁面上抽取新的URL放入佇列,直到滿足系統的一定停止條件。
1.2 小說網站的基本結構
首頁(總目錄)→分類→小說目錄頁→小說各章節;
1.3 與網站的交互
通常都是用戶通過流覽器(當IE)訪問網站(網路上的伺服器)。
流覽器:網址(href)、請求(requests)→網站伺服器:回應(response)給流覽器→流覽器:緩存並呈現回復的內容。
1.4 開發環境
用高階語言寫的代碼需要解釋或編碼到機器代碼, 才能被電腦執行。
所以開發一個程式, 最基本的需求是一個文字編輯器(寫)和解譯器或編譯器。
開發複雜的程式, 需要調試查錯、需要引入協力廠商庫, 需要邊結各檔, 所以, 一般來說, 一個簡單的文字編輯器加一個解譯器或編譯器是不夠的, 需要一個支援某種高階語言的調試器的較複雜的編輯器。 這樣的編輯器同時還支援可以方便寫代碼(如顏色分類顯示、代碼提示)的外掛程式加入。
2 搭建python開發環境2.1 下載和安裝解譯器python3.6
2.1.1 python解譯器下載地址:https://www.python.org/downloads/release/python-365/
2.1.2 關於環境變數path, 就是可以保證執行python命令時,
path變數中有了安裝路徑後, 即可直接在CMD中輸入python, 可以看到相關回饋相信, 即表示安裝和環境變數配置OK了;
如果不安裝代碼編輯器或專用IDE, 也可以在CMD中輸入python,進行互動式開發;
2.2 下載和安裝代碼編輯器加調試器:pycharm4
PyCharm 由著名的JetBrains公司開發, 帶有一整套可以説明使用者在使用Python語言開發時提高其效率的工 具, 比如調試、語法高亮、Project管理、代碼跳轉、智慧提示、自動完成、單元測試、版本控制。 此外, 該IDE提供了一些高級功能, 以用於支援Django框架下的專業Web開發。
2.2.1 代碼編輯器pycharm下載地址http://www.jetbrains.com/pycharm/download/#section=windows
2.2.2進入啟動介面, 選擇第二個License server, 之後在License server address中隨意輸入下面兩個註冊碼中的任意一個即可, http://idea.liyang.io或http://xidea.online。
啟動後的狀態:
3 添加協力廠商模組
協力廠商模組添加工具pip必須在安裝python3.5時有勾選安裝。
編輯或新建C:Userswwuhnwu01pippip.ini:
[global]
respect-virtualenv = true
download-cache = f:/Python/pip/cache
log-file = f:/Python/pip/pip.log
[install]
timeout = 30
find-links = http://pypi.douban.com
find-links = http://pypi.douban.com/simple
pycharm→檔→setting→project interpreter→pip→右邊加號+→manage repositories→右邊加號+→添加協力廠商模組的鏡像伺服器http://pypi.douban.com/和http://pypi.douban.com/simple
如果還是連接不上協力廠商模組伺服器,有時需要重啟一下pycharm。
4 一個簡單的網路爬蟲3.1 新建專案
3.2 設置專案編譯器
基本的思路:
進入一個小說的目錄頁,請求到目錄(包括各章節的href和章節標題)的內容,提取到全部的href,再通過各href請求到各網頁的內容,經過資料清洗和適當的回到,寫入到一個文字檔
代碼:
以上代碼運行後,即可把整部小說的內容寫入文字檔。
不同的網站,內面內容的寫法會有差別,在提取資料和清洗資料時要做相應調整變化。
一些網站會禁止爬蟲,當你嘗試爬取網站資源時,一些網站會有反爬策略,將你的IP加入黑名單,當你爬取或訪問時,頁面會回應為:“HTTP Error 403: Forbidden錯誤”。
附原始程式碼:
import requests
import re
# 1 獲取小說目錄頁
url = 'http://www.xiaoshuotxt.org/wuxia/1617/'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text
title = re.findall(r'(.*?)',menu)
# 3 迴圈訪問章節,並獲取內容
for chapter_info in chapter_info_list:
chapter_url = chapter_info[0]
chapter_title = chapter_info[1]
if 'http' not in chapter_url:
chapter_url = 'http://www.xiaoshuotxt.org%s' % chapter_url
chapter_response = requests.get(chapter_url)
chapter_response.encoding = 'utf-8'
chapter_html = chapter_response.text
# 資料提取
chapter_content = re.findall(r'
# 資料清洗(按頁面規律)
chapter_content = chapter_content.replace(' ','')
chapter_content = chapter_content.replace('
','')
# 資料持久化(寫入txt),先要在前面新建檔
fb.write(chapter_title)
fb.write(' ')
fb.write(chapter_content)
fb.write(' ')
#用以下語句可以看到動態過程
print(chapter_url)
-End-
如果還是連接不上協力廠商模組伺服器,有時需要重啟一下pycharm。
4 一個簡單的網路爬蟲3.1 新建專案
3.2 設置專案編譯器
基本的思路:
進入一個小說的目錄頁,請求到目錄(包括各章節的href和章節標題)的內容,提取到全部的href,再通過各href請求到各網頁的內容,經過資料清洗和適當的回到,寫入到一個文字檔
代碼:
以上代碼運行後,即可把整部小說的內容寫入文字檔。
不同的網站,內面內容的寫法會有差別,在提取資料和清洗資料時要做相應調整變化。
一些網站會禁止爬蟲,當你嘗試爬取網站資源時,一些網站會有反爬策略,將你的IP加入黑名單,當你爬取或訪問時,頁面會回應為:“HTTP Error 403: Forbidden錯誤”。
附原始程式碼:
import requests
import re
# 1 獲取小說目錄頁
url = 'http://www.xiaoshuotxt.org/wuxia/1617/'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text
title = re.findall(r'(.*?)',menu)
# 3 迴圈訪問章節,並獲取內容
for chapter_info in chapter_info_list:
chapter_url = chapter_info[0]
chapter_title = chapter_info[1]
if 'http' not in chapter_url:
chapter_url = 'http://www.xiaoshuotxt.org%s' % chapter_url
chapter_response = requests.get(chapter_url)
chapter_response.encoding = 'utf-8'
chapter_html = chapter_response.text
# 資料提取
chapter_content = re.findall(r'
# 資料清洗(按頁面規律)
chapter_content = chapter_content.replace(' ','')
chapter_content = chapter_content.replace('
','')
# 資料持久化(寫入txt),先要在前面新建檔
fb.write(chapter_title)
fb.write(' ')
fb.write(chapter_content)
fb.write(' ')
#用以下語句可以看到動態過程
print(chapter_url)
-End-