您的位置:首頁>正文

一個簡單的網路爬蟲入門python(包括開發環境搭建和pycharm啟動)

基本任務:

I 搭建python開發環境

II 寫一個簡單的網路爬蟲, 在某一個網站將一部小說各章節(一般是一個章節一個網頁)粘貼到一個文字檔內。

1 首先瞭解幾個概念

1.1 網路爬蟲

網路爬蟲是一個自動提取網頁的程式, 它為搜尋引擎從萬維網上下載網頁, 是搜尋引擎的重要組成。

網路爬蟲可以類比流覽器流覽網頁, 自動批量下載網路資源(能夠訪問到的, 放在網路服務器的檔)。

傳統爬蟲從一個或若干初始頁面的URL開始, 獲得初始頁面上的URL, 在抓取網頁的過程中, 不斷從當前頁面上抽取新的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命令時,

不需要輸入安裝路徑。 在安裝時如果有直接勾選了"add python to path"則在安裝時即自動配置了path的安裝路徑;

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_html)

# 資料清洗(按頁面規律)

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_html)

# 資料清洗(按頁面規律)

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-

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示