python3.5不一樣於python2.7,在python3.5中,編寫爬蟲小程序,須要安裝模塊urllib下的request和parse類html
小程序1:編寫腳本,用來實現抓取百度貼吧指定頁面java
1 import urllib.parse #主要用來解析url 2 import urllib.request #主要用於打開和閱讀url 3 import os,re 4 import urllib.error #用於錯誤處理 5 6 print("模擬抓取百度貼吧python和java頁面,並寫入指定路徑文件") 7 8 def tieba_baidu(url,l): 9 #假裝成瀏覽器 10 header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'} 11 for i in range(len(l)): 12 file_name="G:/test/"+l[i]+".html" 13 print("正在下載"+l[i]+"頁面,並保存爲"+file_name) 14 m=urllib.request.urlopen(url+l[i],headers=header).read() 15 with open(file_name,"wb") as file: 16 file.write(m) 17 18 if __name__=="__main__": 19 url="http://tieba.baidu.com/f?kw=" 20 l_tieba=["python","java","c#"] 21 tieba_baidu(url,l_tieba)
小程序二:爬取指定頁面指定格式的文件(本例子爬取指定頁面的jpg文件)python
1 print("爬取指定頁面的jp格式的文件") 2 def baidu_tieba(url,l): 3 """ 4 根據傳入的地址和關鍵字列表進行圖片抓取 5 """ 6 for i in range(len(l)): 7 count=1 8 file_name="G:/test/"+l[i]+".html" 9 print("正在下載"+l[i]+"頁面,並保存爲"+file_name) 10 m=urllib.request.urlopen(url+l[i]).read() 11 #建立目錄保存每一個網頁上的圖片 12 dirpath="G:/test/" 13 dirname=l[i] 14 new_path=os.path.join(dirpath,dirname) 15 if not os.path.isdir(new_path): 16 os.makedirs(new_path) 17 18 page_data=m.decode() 19 page_image=re.compile('<img src=\"(.+?)\"') #匹配圖片的pattern 20 for image in page_image.findall(page_data):#page_image.findall(page_data)用正則表達式匹配全部的圖片 21 pattern=re.compile(r'http://.*.jpg$') #匹配jpg格式的文件 22 if pattern.match(image): #若是匹配,則獲取圖片信息,若不匹配,進行下一個頁面的匹配 23 try: 24 image_data=urllib.request.urlopen(image).read() #獲取圖片信息 25 image_path=dirpath+dirname+"/"+str(count)+".jpg" #給圖片命名 26 count+=1 27 print(image_path) #打印圖片路徑 28 with open(image_path,"wb") as image_file: 29 image_file.write(image_data) #將圖片寫入文件 30 except urllib.error.URLError as e: 31 print("Download failed") 32 with open(file_name,"wb") as file: #將頁面寫入文件 33 file.write(m) 34 35 if __name__=="__main__": 36 url="http://tieba.baidu.com/f?kw=" 37 l_tieba=["python","java","c#"] 38 baidu_tieba(url,l_tieba)
注:正則表達式
一、要爬取某個頁面的文件,必須用urllib.request.urlopen打開頁面的鏈接,並用read方法讀取頁面的html內容小程序
二、要爬取某些具體內容,必須分析該頁面對應的html代碼,找到需爬取內容所在位置的標籤,利用正則表達式獲取標籤c#
三、瀏覽器假裝:爲了防止有些網站拒絕爬蟲,咱們須要假裝成瀏覽器來實現頁面的爬取,即須要添加頭部文件來假裝成瀏覽器瀏覽器
header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'}python2.7
四、規範:爬取的內容儘可能寫入到某個文件,若是直接打印在控制檯,影響閱讀效果;網站
五、致謝:上文小例子親測經過,但具體思路借鑑某位大神,可是地址找不到了,沒法分享給你們~url