【Python】爬蟲-1
阿新 • • 發佈:2018-05-15
css encode HA res htm 引用 pre 響應 con
#練習1:獲取搜狐網頁上所有的URL並且把與籃球有關的內容篩選出來 #算法: #1、獲取搜狐網站所有內容 #2、判斷哪些是鏈接,獲取URL格式有效的鏈接 #3、獲取每個有效URL網頁的內容 #4、判斷內容是否包含籃球 #5、如果包含籃球,保存網頁 import requests import re import bs4 resq = requests.get("http://www.sohu.com")#請求搜狐網站 print resq.text[:100]#打印響應結果前一百長度 print "*****************"*5 links = re.findall(r‘href="(.*?)"‘, resq.text)#查找所有包含href內容 #print links print len(links) valid_link = []#保存有效連接 invalid_link = []#保存無效連接 print "*****************"*5 for link in links: if re.search(r"(\.jpg)|(\.jpeg)|(\.gif)|(\.ico)|(\.png)|(\.js)|(\.css)$", link.strip()):#資源連接篩選出來 #print 6, link invalid_link.append(link.strip())continue#進入此判斷之後執行完直接執行下一次循環 elif link.strip() == "" or link.strip() == "#" or link.strip() == "/":#無效內容篩選去除 #print 1,link invalid_link.append(link) continue elif link.strip().startswith("//"):#把有效相對連接篩選保存 #print 2,link valid_link.append("http:" + link.strip())continue elif link.strip().count("javascript") >= 1 or link.strip().count("mailto:") >= 1:#引用js連接及郵箱超級連接去除 #print 3,link invalid_link.append(link.strip()) continue elif re.match(r"/\w+", link):#把剩下所有內容連接再做進一步篩選 #print 5,link if re.match(r"http://.*?/", resq.url.strip()):#http開頭連接篩選 valid_link.append(re.match(r"http://.*?/", resq.url.strip()).group() + link.strip())#把連接以/結尾內容保存 else: valid_link.append(re.match(r"http://.*", resq.url.strip()).group() + link.strip())#把連接以內容結尾保存 continue else: #print 7,link valid_link.append(link.strip())#篩選剩下的內容都保存到有效列表中 print "*****************"*5 file_num = 1#為創建文件準備 for link in list(set(valid_link)): # print link resq = requests.get(link, verify=True)#允許證書校驗並訪問所有保存的有效連接 if u"籃球" in resq.text:#篩選網頁內容中是否存在“籃球”內容 #print link if u‘meta charset="utf-8"‘ in resq.text:#判斷網頁是否以utf-8編碼 with open(r"e:\\test4\\crawler\\" + str(file_num) + ".html", "w") as fp: fp.write(resq.text.strip().encode("utf-8"))#編碼內容為utf-8後保存到指定目錄 else: with open(r"e:\\test4\\crawler\\" + str(file_num) + ".html", "w") as fp: fp.write(resq.text.strip().encode("gbk"))#編碼內容為gbk後保存到指定目錄 file_num += 1 print "Done!"
【Python】爬蟲-1