一、定義:網絡爬蟲(Web Spider),又被稱爲網頁蜘蛛,是一種按照必定的規則,自動地抓取網站信息的程序或者腳本。html
二、簡介:網絡蜘蛛是一個很形象的名字。若是把互聯網比喻成一個蜘蛛網,那麼Spider就是在網上爬來爬去的蜘蛛。網絡蜘蛛是經過網頁的連接地址來尋找網頁,從 網站某一個頁面開始,讀取網頁的內容,找到在網頁中的其它連接地址,而後經過這些連接地址尋找下一個網頁,這樣一直循環下去,直到把這個網站全部的網頁都抓取完爲止。正則表達式
三、爬蟲流程:①先由urllib的request打開Url獲得網頁html文檔——②瀏覽器打開網頁源代碼分析元素節點——③經過Beautiful Soup或則正則表達式提取想要的數據——④存儲數據到本地磁盤或數據庫(抓取,分析,存儲)數據庫
2、上代碼,直接看註釋瀏覽器
開發環境:Win10+Python 3.6.1 64bit+PyCharm,自學Python 3爬蟲時的備忘筆記。網絡
1、爬取簡書網站首頁文章的標題和文章連接多線程
from urllib import request
分佈式
from bs4 import BeautifulSoup #Beautiful Soup是一個能夠從HTML或XML文件中提取結構化數據的Python庫
ide
#構造頭文件,模擬瀏覽器訪問
函數
url="http://www.jianshu.com"
工具
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
page = request.Request(url,headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')#打開Url,獲取HttpResponse返回對象並讀取其ResposneBody
# 將獲取到的內容轉換成BeautifulSoup格式,並將html.parser做爲解析器
soup = BeautifulSoup(page_info, 'html.parser')
# 以格式化的形式打印html
#print(soup.prettify())
titles = soup.find_all('a', 'title')# 查找全部a標籤中class='title'的語句
'''
# 打印查找到的每個a標籤的string和文章連接
for title in titles:
print(title.string)
print("http://www.jianshu.com" + title.get('href'))
'''
#open()是讀寫文件的函數,with語句會自動close()已打開文件
with open(r"D:\Python\test\articles.txt","w") as file: #在磁盤以只寫的方式打開/建立一個名爲 articles 的txt文件
for title in titles:
file.write(title.string+'\n')
file.write("http://www.jianshu.com" + title.get('href')+'\n\n')
結果:
大概學習了下經過urllib和Beautiful Soup 進行簡單數據爬取的流程,可是那隻適用於一些簡單的、數據量比較小的爬蟲項目,若是須要爬取的數據量比較大的話,以前的方法一定很是緩慢,並且還可能遇到大規模爬蟲IP被網站封禁的狀況,由於好的網站會有反爬蟲策略。多線程和分佈式爬蟲、我剛整理了一套2018最新的0基礎入門和進階教程,無私分享,加Python學習q-u-n :二二七,四三五,四五零 便可獲取,內附:開發工具和安裝包,以及系統學習路線圖
IP代理、處理驗證碼、模擬登錄、內置瀏覽器引擎爬蟲,還有注意配合反爬蟲措施比較少的移動APP端抓取(抓包工具Fiddler)等等問題。