最新2017年版利用Python3系列基础知识完成爬虫脚本带完整注释 - 基础爬虫(一)

引言

爬虫已经有很多了,我在网上找了很多,但是都不能执行,于是敲了一份新鲜的,拿出来分享,应该可以直接运行,执行前请查看python版本。


版权所有:CSND_Ayo,转载请注明出处:http://blog.csdn.net/csnd_ayo


文章最后更新时间:2017年4月2日 22:13:45

简介

编程IDE:Pycharm 2016.1.2

开发环境:Python 3.6.1

操作系统:Window 7


赏析



源码

代码注释已经无比清晰,就不再过多赘述了。

# -*- coding:utf-8 -*-

#
# 爬虫系列 - http://jandan.net/ooxx/
# 作者:陈鲁勇
# 邮箱:727057301@qq.com
# 撰写时间:2017年4月2日 22:06:54
# Python版本:3.6.1
# CSDN:http://blog.csdn.net/csnd_ayo
#

import urllib.request
import os
import time

# 打开URL,返回HTML信息
def open_url(url):
    # 根据当前URL创建请求包
    req = urllib.request.Request(url)
    # 添加头信息,伪装成浏览器访问
    req.add_header('User-Agent',
                   'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36')
    # 发起请求
    response = urllib.request.urlopen(req)
    # 返回请求到的HTML信息
    return response.read()

# 查找URL中的下一页页码
def get_page(url):
    # 请求网页,并解码
    html=open_url(url).decode('utf-8')
    # 在html页面中找页码
    a=html.find('current-comment-page')+23
    b=html.find(']',a)
    # 返回页码
    return html[a:b]

# 查找当前页面所有图片的URL
def find_imgs(url):
    # 请求网页
    html=open_url(url).decode('utf-8')
    img_addrs=[]
    # 找图片
    a = html.find('img src=')
    #不带停,如果没找到则退出循环
    while a != -1:
        # 以a的位置为起点,找以jpg结尾的图片
        b = html.find('.jpg',a, a+255)
        # 如果找到就添加到图片列表中
        if b != -1:
            img_addrs.append(html[a+9:b+4])
        # 否则偏移下标
        else:
            b=a+9
        # 继续找
        a=html.find('img src=',b)
    return img_addrs

# 保存图片
def save_imgs(img_addrs):
    for each in img_addrs:
        print('download image:%s'%each)
        filename=each.split('/')[-1]
        with open(filename,'wb') as f:
            img=open_url("http:"+each)
            f.write(img)

# 下载图片
# folder 文件夹前缀名
# pages 爬多少页的资源,默认只爬10页
def download_mm(folder='woman',pages=10):
    folder+= str(time.time())
    # 创建文件夹
    os.mkdir(folder)
    # 将脚本的工作环境移动到创建的文件夹下
    os.chdir(folder)

    # 本次脚本要爬的网站
    url='http://jandan.net/ooxx/'
    # 获得当前页面的页码
    page_num=int(get_page(url))
    for i in range(pages):
        page_num -= i
        # 建立新的爬虫页
        page_url=url+'page-'+str(page_num-1)+'#comments'
        # 爬完当前页面下所有图片
        img_addrs=find_imgs(page_url)
        # 将爬到的页面保存起来
        save_imgs(img_addrs)

if __name__ == '__main__':
    download_mm()


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值