最基本的抓取網(wǎng)頁內(nèi)容的代碼實現(xiàn):
#!/usr/bin/env python from urllib import urlretrieve def firstNonBlank(lines): for eachLine in lines: if not eachLine.strip(): continue else: return eachLine def firstLast(webpage): f = open(webpage) lines = f.readlines() f.close() print firstNonBlank(lines), lines.reverse() print firstNonBlank(lines), def download(url='http://www',process=firstLast): try: retval = urlretrieve(url)[0] except IOError: retval = None if retval: process(retval) if __name__ == '__main__': download()
利用urllib模塊,來實現(xiàn)一個網(wǎng)頁中針對圖片的抓取功能:
import urllib.request import socket import re import sys import os targetDir = r"C:/Users/elqstux/Desktop/pic" def destFile(path): if not os.path.isdir(targetDir): os.mkdir(targetDir) pos = path.rindex('/') t = os.path.join(targetDir, path[pos+1:]) return t if __name__ == "__main__": hostname = "http://www.douban.com" req = urllib.request.Request(hostname) webpage = urllib.request.urlopen(req) contentBytes = webpage.read() for link, t in set(re.findall(r'(http:[^/s]*?(jpg|png|gif))', str(contentBytes))): print(link) urllib.request.urlretrieve(link, destFile(link))
import urllib.request import socket import re import sys import os targetDir = r"H:/pic" def destFile(path): if not os.path.isdir(targetDir): os.mkdir(targetDir) pos = path.rindex('/') t = os.path.join(targetDir, path[pos+1:]) #會以/作為分隔 return t if __name__ == "__main__": hostname = "http://www.douban.com/" req = urllib.request.Request(hostname) webpage = urllib.request.urlopen(req) contentBytes = webpage.read() match = re.findall(r'(http:[^/s]*?(jpg|png|gif))', str(contentBytes) )#r'(http:[^/s]*?(jpg|png|gif))'中包含兩層圓括號,故有兩個分組, #上面會返回列表,括號中匹配的內(nèi)容才會出現(xiàn)在列表中 for picname, picType in match: print(picname) print(picType) ''''' 輸出: http://img3.douban.com/pics/blank.gif gif http://img3.douban.com/icon/g111328-1.jpg jpg http://img3.douban.com/pics/blank.gif gif http://img3.douban.com/icon/g197523-19.jpg jpg http://img3.douban.com/pics/blank.gif gif ... ''' 新聞熱點
疑難解答
圖片精選