python爬虫实战之美女图

最近学习python爬虫,写了一个简单的递归爬虫下载美女图片的程序。废话不多说,先上图:


捕获.JPG
2.JPG

一共是三千多张美图哦:)
python版本为3.5,使用urllib和urllib.request访问网页,用BeautifulSoup解析获取到的html,找到主页面中的图片链接和新的页面的链接,下载完图片后,依次访问新的链接,进行递归爬虫,直到递归到最深层。其中集合set存放已爬过的页面,以免访问到相同的页面。源码如下:
import urllib
import urllib.request
import re
import time
from threading import *
from bs4 import BeautifulSoup

screenLock = Semaphore(value=1)
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'}
main_url = 'http://www.chunmm.com'
num = 1
pages = set()
pages.add(main_url)

def downloadimg(url, depth):
if depth != 0:
print(depth)
print(url)
req = urllib.request.Request(url, headers=headers)
html = urllib.request.urlopen(req).read().decode('utf-8')
soup = BeautifulSoup(html, 'html.parser')
imgurllist = soup.find_all('img', {'src': re.compile(r'http://.+.jpg')})
urllist = soup.find_all('a', {'href': re.compile(r'/.+?/.+?.html')})
local_path = 'd:/OOXXimg/'
global num
for item in imgurllist:
print(item["src"])
url = item["src"]
path = local_path + str(num) + '.jpg'
urllib.request.urlretrieve(url, path)
num += 1
screenLock.acquire()
print(str(num)+' img was downloaded\n')
screenLock.release()

    for url in urllist:
        if url not in pages:
            global main_url
            newurl = main_url+url["href"]
            downloadimg(newurl, depth-1)
            pages.add(url)
            time.sleep(1)
else:
    return

def main():
downloadimg(main_url, 3)

if name == 'main':
main()

注意:最好在访问页面时加上异常处理,以免访问页面时url出现异常导致程序退出。该实例程序递归层次为3层,共下载3000多张图片。
多谢阅读!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 声明:本文讲解的实战内容,均仅用于学习交流,请勿用于任何商业用途! 一、前言 强烈建议:请在电脑的陪同下,阅读本文...
    Bruce_Szh阅读 12,788评论 6 28
  • Python爬虫入门(urllib+Beautifulsoup) 本文包括:1、爬虫简单介绍2、爬虫架构三大模块3...
    廖少少阅读 9,938评论 0 6
  • 1 前言 作为一名合格的数据分析师,其完整的技术知识体系必须贯穿数据获取、数据存储、数据提取、数据分析、数据挖掘、...
    whenif阅读 18,107评论 45 523
  • 关于bs4,官方文档的介绍已经非常详细了,传送:Beautifulsoup 4官方文档,这里我把它组织成自己已经消...
    徐薇薇阅读 5,481评论 0 1
  • 我喜欢花露水的芳香,胜过这世上的万千气味,总觉得有一种道不出的情感掺杂在其中。我对这芳香有种莫名的依赖,无论是春夏...
    okay_先生阅读 1,079评论 1 2