一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python爬蟲爬取百度搜索結(jié)果

 dbn9981 2016-10-03
[python] view plain copy
  1. # -*- coding: utf-8 -*-  
  2. #---------------------------------------  
  3. #   程序:百度搜索爬蟲  
  4. #   版本:0.1  
  5. #   作者:LuoQi  
  6. #   日期:2015-03-24  
  7. #   語言:Python 2.7  
  8. #   操作:輸入帶分頁的地址,去掉最后面的數(shù)字,設(shè)置一下起始頁數(shù)和終點頁數(shù)。  
  9. #   功能:下載對應(yīng)頁碼內(nèi)的所有頁面并存儲為txt文件。  
  10. #---------------------------------------  
  11. import string  
  12. import urllib  
  13. import urllib2  
  14. import re  
  15. import os  
  16. import socket   
  17. import time   
  18. #全局變量,如果頻繁urlopen一個網(wǎng)站會被遠程連接強制斷掉,這里為了遞歸調(diào)用函數(shù),接著從斷掉的那一頁重新開始爬取  
  19. CONSTANT = 1  
  20. def MailSearch(url,begin_page,end_page):   
  21.     global CONSTANT  
  22.     #正則匹配,這里我要獲取@xxxx.com.cn結(jié)尾的郵箱號  
  23.     p = re.compile(r'\w+<em>@xxxx.com.cn')    
  24.     base_dir = "E:\\mailAddress\\"  
  25.     for i in range(begin_page, end_page+1):  
  26.         print i  
  27.         CONSTANT +=1  
  28.         try:  
  29.             sName = string.zfill(i,7) + '.txt' #自動填充成六位的文件名  
  30.             f = open(base_dir + sName,'w+')  
  31.             #不加sleep_download_time保持隔一段時間一次爬取指定會出現(xiàn)(python socket.error: [Error   
[python] view plain copy
  1.                      #10054] 遠程主機強迫關(guān)閉了一個現(xiàn)有的連接)  
  2. #加了貌似還會出現(xiàn),呵呵,所以被迫寫了遞歸函數(shù),保證我能爬完所有的搜索結(jié)果  
  3. timeout = 10  
  4. socket.setdefaulttimeout(timeout)#這里對整個socket層設(shè)置超時時間。后續(xù)文件中如果再使用                          
[python] view plain copy
  1.                         #到socket,不必再設(shè)置    
  2.             sleep_download_time = 1  
  3.             time.sleep(sleep_download_time) #這里時間自己設(shè)定    
  4.             requests = urllib2.urlopen(url + str(i*10)) #這里是要讀取內(nèi)容的,不斷變更的地址  
  5.             content = requests.read()#讀取,一般會在這里報異常,被爬取的網(wǎng)站強行斷掉  
  6.             #之前直接獲取到網(wǎng)頁內(nèi)容,然后直接正則匹配發(fā)現(xiàn)始終只能拿到第一頁的內(nèi)容后面的沒有了  
  7.             #只能先下載下來,再正則再刪去該網(wǎng)頁,不知道哪位大神能給出解釋  
  8.             f.write(content)  
  9.             f.close()  
  10.             requests.close()#記得要關(guān)閉   
  11.         except UnicodeDecodeError as e:  
  12.             print('-----UnicodeDecodeError url:',url)  
  13.             #繼續(xù)調(diào)用爬取函數(shù)  
  14.             cnpcMailSearch(bdurl,CONSTANT,end_page)  
  15.         except urllib2.error.URLError as e:  
  16.             print("-----urlError url:",url)  
  17.             cnpcMailSearch(bdurl,CONSTANT,end_page)  
  18.         except socket.timeout as e:  
  19.             print("-----socket timout:",url)  
  20.             cnpcMailSearch(bdurl,CONSTANT,end_page)  
  21.           
  22.         file_object = open(base_dir + sName)  
  23.         try:  
  24.             all_the_text = file_object.read()  
  25.             mailAddress= p.findall(all_the_text)  
  26.             f = open(r'E:\\test.txt','a')  
  27.             for num in mailAddress:  
  28.                 s = str(num)  
  29.                 #在網(wǎng)頁源代碼里郵箱地址是這樣的xxxxx<em>@xxxx.com.cn,沒辦法我得去掉<em>  
  30.                 s = s[:-16]+s[-12:]  
  31.                 f.write(s)  
  32.                 f.write('\n')  
  33.             f.close()  
  34.         finally:  
  35.             file_object.close()  
  36.         #即時刪除下載的網(wǎng)頁  
  37.         os.remove(base_dir + sName)  
  38.    
  39.    
  40. #-------- 在這里輸入?yún)?shù) ------------------  
  41. #這是原始的搜索結(jié)果地址特別長,而且每翻一頁地址都會變化,研究了一下,其實不需要&rsv_*這個東東,&連接的內(nèi)容之間<span style="font-family: Arial, Helvetica, sans-serif;">顯然無順序要求</span>  
[python] view plain copy
  1. #http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=%40xxxx.com.cn&rsv_pq=f96adbb30000145f&  
  2. #rsv_t=a5db0FgY8cAll9kpqEfb2F9yqcfIoZRa0BxSyHghKZJU8PvXwrGXvlTzT10&rsv_enter=0&rsv_sug3=1&rsv_sug1=1&rsv_sug4=1167&rsv_sug=1  
  3. #所以改為以下地址,方便獲取  
  4. bdurl = "http://www.baidu.com/s?wd=%40xxxx.com.cn&oq=%40xxxx.com.cn&tn=sitehao123&ie=utf-8&pn="  
  5. #設(shè)置起始頁,終止頁  
  6. begin_page = 0  
  7. end_page = 1000  
  8. #-------- 在這里輸入?yún)?shù) ------------------  
  9. #調(diào)用  
  10. MailSearch(bdurl,begin_page,end_page)  

歡迎批評指正!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产一区二区三区草莓av| 国产精品久久精品毛片| 国产a天堂一区二区专区| 日韩一级免费中文字幕视频| 国产一区欧美一区日本道| 亚洲国产成人精品一区刚刚| 在线观看免费无遮挡大尺度视频| 99久久免费看国产精品| 欧美韩国日本精品在线| 久久福利视频这里有精品| 亚洲熟妇av一区二区三区色堂| 国产精品国产亚洲区久久| 人妻偷人精品一区二区三区不卡| 大香蕉大香蕉手机在线视频| 在线观看视频日韩成人| 日韩偷拍精品一区二区三区| 东京热电东京热一区二区三区| 久久天堂夜夜一本婷婷| 日韩人妻精品免费一区二区三区| 久久精品一区二区少妇| 色无极东京热男人的天堂| 亚洲中文在线中文字幕91| 午夜日韩在线观看视频| 成人精品欧美一级乱黄| 亚洲最大的中文字幕在线视频| 大香蕉久久精品一区二区字幕| 亚洲一区二区三区熟女少妇| 国产偷拍精品在线视频| 国产一区二区三区不卡| 好吊妞视频免费在线观看| 国产熟女高清一区二区| 亚洲中文字幕免费人妻| 欧美日本道一区二区三区| 午夜精品麻豆视频91| 欧美日本道一区二区三区| 色哟哟在线免费一区二区三区 | 成人精品亚洲欧美日韩| 亚洲淫片一区二区三区| 国产又粗又深又猛又爽又黄| 免费在线成人激情视频| 日本理论片午夜在线观看|