背景 自己一直喊着要学爬虫,但是总是因为各种各样的事情耽误了。最近感觉不能再颓废了,于是乎重新拾起来这个小小的目标,开始学习。
开始 先是在知乎上如何入门 Python 爬虫? 这个问题下看了看爬虫的基本概念和原理,发现原理和我之前的理解并没有什么出入,只是集群那一块是我之前没有关注到的。
然后,我找到了一个技术博客,看着那位程序媛写的一系列教程,基于Python3开始了我爬取单页面图片的尝试。
HTTP库用的是Urllib,HTML的解析工具,选用的是BeautifulSoup这个库。
代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 from bs4 import BeautifulSoupimport urllib.requestimport urllib.parseimport osdef url_open (url) : req = urllib.request.Request(url) response = urllib.request.urlopen(req) html = response.read() return html def get_links (url) : html = url_open(url) soup = BeautifulSoup(html, 'html.parser' ) divs = soup('div' , {'class' : 'pic' }) img_addrs = [] for div in divs: img_urls = div.find('img' )['src' ] img_addrs.append(img_urls) return img_addrs def save_imgs (folder,img_addrs) : for each in img_addrs: filename = each.split('/' )[-1 ] with open(filename, 'wb' ) as f: img = url_open(each) f.write(img) def download_pic (folder = 'pic' ) : url = 'http://jcss.shangxin.link/spiderTest.html' img_addrs = get_links(url) os.mkdir(folder) os.chdir(folder) save_imgs('pic' , img_addrs) if __name__ == '__main__' : download_pic()
这段代码的功能只是在一个单页面上爬取一些照片,由于初学,自己挂了个结构简单的测试页面以供爬虫爬取测试…
踩的坑
在这里,我特别注意到了网上很多代码中用的是Urllib2这个库,到了Python3中无法运行,这是因为Urllib和Urllib2出现在python2中,在3中,统一整合Urllib ,而没有了Urllib2。
urllib.request.urlopen()的参数中输入的是一个页面地址,有一次忘记加上协议( http:// ),导致报错(这不算坑,逃…