#!/usr/bin/env python
# -*- coding:utf-8 -*- 煎蛋网抓妹子图
import urllib.request
import os
import random def url_open(url): #定义打开网络连接函数
req = urllib.request.Request(url)#创建Request对象
#给Request对象添加伪装头文件
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36')
#定义个代理IP列表 用于随机选择代理IP
iplist=['218.240.53.54:81','123.7.78.157:9999','112.95.105.26:9999','61.174.10.22:8080','115.52.204.30:9999']
#创建代理对象
proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})
opener = urllib.request.build_opener(proxy_support)
#设置代理对象伪装头文件
opener.addheaders=[("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36")]
#安装代理文件
urllib.request.install_opener(opener)
#打开对应URL
respons = urllib.request.urlopen(url)
#接收对应URL的html代码
html = respons.read()
return html def get_page(url):#定义查找图片页面函数
html=url_open(url)#打开URL页面或的html代码
html=html.decode('utf-8')#用utf-8反编码 a=html.find('current-comment-page')+23#查找html代码中current-comment-page标志+23偏移量 得到图片页码 <span class="current-comment-page">[2110]</span>其中的2110
b=html.find(']',a) #定义结束位置
return (html[a:b])#返回取得的页码 def find_img(url):
html= url_open(url).decode('utf-8')#打开URL文件 把返回的html文件utf-8反编译
img_addrs=[]#定义图片地址列表
a=html.find('img src=')#在html文件中查找所有img src开头的 图片文件
while a!=-1: #a=-1时表示find完毕
b=html.find('.jpg',a,a+255)#查询到 img_src开头 和.jpg结尾的
if b != -1:
img_addrs.append(html[a+9:b+4])#查询到满足条件的html代码信息 就保存在图片列表中
else:
b=a+9
a=html.find('img src=',b)
return img_addrs def save_imgs(folder,img_adds):
for each in img_adds:
filename = each.split('/')[-1]
with open(filename,'wb') as f:
img=url_open(each)
f.write(img) def down_mm(folder='downloadimg',pages=10):
os.mkdir(folder)#新建文件夹
os.chdir(folder)#切换到当前文件夹 url="http://jandan.net/ooxx/"
page_num=int(get_page(url))#取得开始页面号
print(str(page_num))
for i in range(pages):#依次页面号递减 返回前10页的图片
page_num -=i
page_url=url+'page-'+str(page_num)+'#comments'#拼出页面URL+图片页面号 http://jandan.net/ooxx/page-2110#comments
img_adds= find_img(page_url)#查找出当前打开页面的所有图片路径和文件名称信息保存在列表中
save_imgs(folder,img_adds)#根据列表中保存的文件路径和名称 通过网络下载图片到指定文件夹下面 down_mm()

python基础学习1-第一个网络爬虫程序的更多相关文章

  1. 使用Python写的第一个网络爬虫程序

    今天尝试使用python写一个网络爬虫代码,主要是想訪问某个站点,从中选取感兴趣的信息,并将信息依照一定的格式保存早Excel中. 此代码中主要使用到了python的以下几个功能,因为对python不 ...

  2. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  3. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  4. 【网络爬虫入门01】应用Requests和BeautifulSoup联手打造的第一条网络爬虫

    [网络爬虫入门01]应用Requests和BeautifulSoup联手打造的第一条网络爬虫 广东职业技术学院 欧浩源 2017-10-14  1.引言 在数据量爆发式增长的大数据时代,网络与用户的沟 ...

  5. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  6. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  7. Web基础学习---HTML 第一天

    Web基础学习---HTML 第一天 1 HTML标签 2.CSS Web开发基础HTML好吧离开Python几天...如何学好前端?? 多去看别人的网站.多看.多写.多练,(知乎.36Kr.)多练就 ...

  8. python基础学习(起步)

    目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...

  9. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  10. Python基础学习之环境搭建

    Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的.今天我们将带领Python零基础的初学者完成入门的第一步——环境搭建.本文会先来区分几个在P ...

随机推荐

  1. J2EE开发环境--RAP

    J2EE开发环境--RAP J2EE开发环境分四步: 1.JDK环境 2.tomcat 3.redis环境 4.mysql环境 5.RAP包 线上环境,推荐使用源码,自建应用用户,设置对应规则,禁止关 ...

  2. oracle 数据库数据备份

    oracle 数据库数据备份 1.使用oracle用户应该就可以进行数据备份(不需要root用户):su oracle 查oracle实例名:echo $ORACLE_SID       例如查出来的 ...

  3. C++ 读书笔记1

    c++ 笔记1 body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding ...

  4. JAVA容器全面总结

    1      容器体系图 简图: 详图: 2      基础 2.1      Iterator接口 迭代器. 具有的能力:后向迭代.删除. 2.2      Iterable接口 表示一个类具有迭代 ...

  5. MapReduce实例2(自定义compare、partition)& shuffle机制

    MapReduce实例2(自定义compare.partition)& shuffle机制 实例:统计流量 有一份流量数据,结构是:时间戳.手机号.....上行流量.下行流量,需求是统计每个用 ...

  6. JNLP应用程序无法打开的解决办法

    JNLP应用程序无法打开: 1.控制面板-Java-Java 选项卡-查看.用户选项卡勾选对应版本JDK(没有就添加,路径填类似:D:\Program Files\Java\jre6\bin\java ...

  7. 1066. [SCOI2007]蜥蜴【最大流】

    Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃 到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到 ...

  8. 1483. [HNOI2009]梦幻布丁【平衡树-splay】

    Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色. 例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. Input ...

  9. iPhone 电脑备份路径

    C:\Users\iChen\AppData\Roaming\Apple Computer\MobileSync\Backup

  10. Fluent Terminal

    特性: PowerShell,CMD,WSL或自定义shell的终端 支持选项卡和多个窗口 主题和外观配置 导入/导出主题 导入iTerm主题 全屏模式 可编辑的键绑定 搜索功能 配置shell配置文 ...