文档章节

python 爬虫的学习

嘻嘻哥
 嘻嘻哥
发布于 2015/06/14 21:53
字数 626
阅读 21
收藏 0
点赞 0
评论 0

以下代码该有的注释都有了,所以就不再解释了

import urllib.request
import urllib.parse
import urllib.error
import os
import re
import shutil    #高层次的文件操作模块

def delete_dir(folder):
    """删除整个目录"""
    shutil.rmtree(folder)

def make_dir(folder):
    """创建并切换到对应的目录"""
    if not os.path.exists(folder):
        os.mkdir(folder)
    os.chdir(folder)

def url_open(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) Maxthon/4.4.5.1000 Chrome/30.0.1599.101 Safari/537.36")
    try:
        response = urllib.request.urlopen(req)
    except urllib.error.HTTPError as e:
        print("open url failed!, error code = ", e.code)
    else:
        return response.read()

def get_element_value(url, pattern):
    """按正则表达式在打开的url里匹配满足pattern的所有数据,并返回对应的列表"""
    s = url_open(url).decode('utf-8')
    result_list = re.findall(pattern, s)
    return list(set(result_list)) #去重复

def save_picture(img_src_list):
    """将所有的图片保存到当前目录下"""
    for img_src in img_src_list:
        file_name = img_src.split('/')[-1]
        with open(file_name, 'wb') as f:
            f.write(url_open(img_src))

def download_jiandan_mm_picture(folder, page = 10):
    """下载煎蛋妹子的图片"""
    make_dir(folder)
    
    url = "http://jandan.net/ooxx/"
    page_num = get_element_value(url, r'class="current-comment-page">\[(\d+)\]')
    page_num = int(page_num[0])
    img_src_list = []
    for i in range(page):
        sub_url = url + 'page-' + str(page_num - i) + "#comments"
        s = url_open(sub_url).decode('utf-8')
        img_src_list = re.findall(r'img src="(.*\.jpg)"', s)
        save_picture(img_src_list)

def get_category(url):
    """获取豆瓣妹子主页的分类"""
    result_list = get_element_value(url, r'href="/category/(\d+)">(.*)<')
    dd = dict(result_list)#去掉重复的key
    result_list = [(int(x),dd[x]) for x in dd]
    result_list.sort()

    print("请选择对应的分类:")
    for result in result_list:
        print("%d.\t%s" % (result[0], result[1]))

    select = input("请输入您的选择:")
    return [(result[0], result[1]) for result in result_list if result[0] == int(select)]

def download_douban_meizi_picture(folder, page = 10):
    """下载豆瓣妹子的图片"""
    make_dir(folder)

    url = "http://www.dbmeizi.com/"
    category = get_category(url)
    make_dir(category[0][1])
    url += "category/" + str(category[0][0])
    page_num = get_element_value(url, r'cgidata.page_count=(\d+)')
    page_num = int(page_num[0])
    
    img_src_list = []
    page = page_num if page_num < page else page
    for i in range(page):
        sub_url = url + '?p=' + str(i)
        s = url_open(sub_url).decode('utf-8')
        img_src_list = re.findall(r'data-src="(.*?\.jpg)"', s)#注(.*?\.jpg)里面的?表示采用非贪婪模式
        save_picture(img_src_list)

def main():
    make_dir(r'C:\Users\fgwd\Desktop\妹子图')
    
    select = input("请选择1.抓取煎蛋妹子图,2.抓取豆瓣妹子图. >>>[2]")
    pages = input("请输入抓取的页数. >>>[10]")
    if select == "":
        select = "2"

    if pages == "":
        pages = "10"

    if select == "1":
        folder = r'C:\Users\fgwd\Desktop\妹子图\煎蛋'
        download_jiandan_mm_picture(folder, int(pages))
    elif select == "2":
        folder = r'C:\Users\fgwd\Desktop\妹子图\豆瓣'
        download_douban_meizi_picture(folder, int(pages))
    else:
        print("输入有误")
        return False
    return True
    
if __name__ == "__main__":
    if main():
        print("图片下载完成")



© 著作权归作者所有

共有 人打赏支持
嘻嘻哥
粉丝 0
博文 6
码字总数 8981
作品 0
厦门
高级程序员
5个python爬虫教材,让小白也有爬虫可写,含视频教程!

认识爬虫   网络爬虫,如果互联网是一张蜘蛛网,网络爬虫既是一个在此网上爬行的蜘蛛,爬了多少路程即获取到多少数据。 python写爬虫的优势   其实以上功能很多语言和工具都能做,但是用...

柯西带你学编程
06/12
0
0
想用 Python 找到一份好工作?这4种工作最热门!

身边有不少朋友最近都开始学习python,大多都在学了一两个月之后来问小编,我现在已经入行了,能去找什么样的工作呢? 小编只能说: 入行!=找工作 那么,自学python的人,如何才能找到满意的工...

python达人
05/16
0
0
Python学到什么程度才可以去找工作?掌握这4点足够了!

大家在学习Python的时候,有人会问“Python要学到什么程度才能出去找工作”,对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来,一般都不会有什么问题,而对...

p柯西
06/27
0
0
2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会

阿里云大学在线工作坊上线,原理精讲+实操演练,让你真正掌握云计算、大数据技能。 在第一批上线的课程中,有一个Python爬虫的课程,畅销书《精通Python网络爬虫》作者韦玮,带你两个月从入门...

云木西
06/27
0
0
月薪20K的Python程序员2018年Python学习进阶书籍推荐

用了python,与太阳肩并肩,本文与大家分享一些Python编程语言的入门书籍,其中不乏经典。以下书籍已经经中心多位编辑老师进行详细阅读后才整理出来供大家学习!推荐下大数据技术学习群:8050...

加米谷
07/09
0
0
高级爬虫(一):Scrapy爬虫框架的安装

Hi 小伙伴们差不多有半个月没有更新干货了,一直有点忙,而且这中间还有曲折过程,也就没有更新文章. 但今天无论如何也要更新一篇文章,接下来是爬虫高级篇重点讲解的地方! 最近会连载Scrap...

Python绿色通道
04/22
0
0
Python未来有哪几个最具有潜力发展方向?

近些年来,Python语言的热度越来越高,因为Python简单,学起来快,是不少新手程序员入门的首选语言。 Python是一门脚本语言,因为Python编程语言能将其他各种编程语言写的模块粘接在一起,所...

Python燕大侠
06/29
0
0
一个月入门Python爬虫,快速获取大规模数据

数据是创造和决策的原材料,高质量的数据都价值不菲。而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣、知乎:爬取优质答案,筛选出各话题下热门内容,探索...

Python开发者
04/25
0
0
Python 数据挖掘学习 一 结巴分词

近期,想对古典小说进行索引,和知识挖掘,所以研究了下python数据挖掘方面的知识 Python安装 python学习 一 python语法,及变量类型 python学习 二 爬一个图片网站上 python学习 二 02 爬一...

shuilan0066
01/22
0
0
年薪20万Python工程师进阶(1):Python 资源 + 经典练手项目

Python 越来越火爆,最近自己也在学习。整理下一些 Python 资料,和练手的项目。希望对你学习 Python 有所帮助。 1、入门阶段 1 Python 官网 Python 官网 The Python Tutorialdocs.python.o...

程序员八阿哥
05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
19分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
34分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
108
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部