本人也是剛剛開始學習python的爬蟲技術,而後原本想在網上找點教程來看看,誰知道一搜索,大部分的都是用python2來寫的,新手嘛,通常都喜歡裝新版本。因而我也就寫一個python3簡單的爬蟲,爬蟲一下貼吧的圖片吧。話很少說,咱們開始。html
首先簡單來講說一下知識。python
1、什麼是爬蟲?瀏覽器
網頁上面採集數據函數
2、學習爬蟲有什麼做用?學習
作案例分析,作數據分析,分析網頁結構.......網站
3、爬蟲環境url
需求:python3x pycharmspa
模塊:urllib 、urllib二、bs四、recode
4、爬蟲思路:orm
1. 打開網頁,獲取源碼。
*因爲多人同時爬蟲某個網站時候,會形成數據冗餘,網站崩潰,因此一些網站是禁止爬蟲的,會返回403拒絕訪問的錯誤信息。----獲取不到想要的內容/請求失敗/IP容易被封……..等
*解決辦法:假裝——不告訴網站我是一個腳本,告訴它我是一個瀏覽器。(加上隨便一個瀏覽器的頭部信息,假裝成瀏覽器),因爲是簡單例子,那咱們就不搞這些騷操做了。
2. 獲取圖片
*Find函數 :只去找第一個目標,查詢一次
*Find_all函數: 找到全部的相同的目標。
這裏可能有一個解析器的問題,咱們也不說了,出問題的同窗百度一堆解決辦法。
3. 保存圖片地址與下載圖片
*a.使用urlib---urlretrieve下載(保存位置:若是保存在跟*.py文件同一個地方,那麼只須要文件夾名稱便可,若是是其餘地方,那麼得寫絕對路徑。)
算了,不說那麼多廢話,既然是個簡單例子,那我就直接貼代碼吧。相信也沒多少人呢看不懂。
提一句:用BeautifulSoup
就能夠不用正則;爬蟲用正則,Bs4, xpath三種 選擇一個就好。固然也能夠混合使用,也還有其餘種。
爬取地址:http://tieba.baidu.com/p/3840085725
代碼以下:
import urllib.request import re import os import urllib #根據給定的網址來獲取網頁詳細信息,獲得的html就是網頁的源代碼 def getHtml(url): page = urllib.request.urlopen(url) html = page.read() return html.decode('UTF-8') def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) #轉換成一個正則對象 imglist = imgre.findall(html) #表示在整個網頁中過濾出全部圖片的地址,放在imglist中 x = 0 #聲明一個變量賦值 path = 'H:\\python lianxi\\zout_pc5\\test' #設置保存地址 if not os.path.isdir(path): os.makedirs(path) # 將圖片保存到H:..\\test文件夾中,若是沒有test文件夾則建立 paths = path+'\\' #保存在test路徑下 for imgurl in imglist: urllib.request.urlretrieve(imgurl,'{0}{1}.jpg'.format(paths,x)) #打開imglist,下載圖片保存在本地, #format格式化字符串 x = x + 1 print('圖片已開始下載,注意查看文件夾') return imglist html = getHtml("http://tieba.baidu.com/p/3840085725") #獲取該網址網頁詳細信息,html就是網頁的源代碼 print (getImg(html)) #從網頁源代碼中分析並下載保存圖片 |
最後效果如圖:
好了,教程到這裏就結束了,更多精彩,敬請關注:IT民工_柒曉白
(ps:對於python本人也是新手,文章有任何錯誤請多多包涵)