使用Python爬百度贴吧里面的美女图

大学时学过几年编程,毕业后虽然从事IT行业,却一直没有机会写代码。几年工作下来,看到我们公司的码农状态,竟然再也不想编程。算起来一个项目都没有完成过,日后想做码农也做不成了。

最近因为工作需要,跑去做段时间运维。Python作为脚本神器,自然要了解。初学Python,觉得还是找几个小项目练练手比较好。GitHub上“Python 练习册,每天一个小程序”便是我找的一些不错的题目。

于是第 0013 题自然而然的引起我的注意: 用 Python 写一个爬图片的程序,爬这个链接里的日本妹子杉本有美的图片。有了荷尔蒙的刺激,学习动力也提高不少。

先上一下效果图:

Python小程序效果图

程序简单解析如下:

1、使用urllib2打开网页链接,获取网页内容。

request = urllib2.Request(url)
response = urllib2.urlopen(request)
content = response.read()

2、使用正则表达式匹配需要获取的图片。

rule_str = r'src="(.+?\.jpg)"'
rule = re.compile(rule_str)
img_list = rule.findall(content)

3、筛选。

我这里默认需要下载的图片是链接中最多的,因此先计算寻找最多的图片链接的长度。然后将不是此长度的链接排除掉。这里使用了Counter这个函数,对每个链接的长度进行自动排序。

for img in img_list:
    len_temp.append(len(img))  # 计算每个图片链接的长度
most_length = tuple(Counter(len_temp).most_common(1))[0][0]  # 默认需要下载的图片是链接中最多的,寻找最多的图片链接的长度

4、下载图片。

for img in img_list:
    if len(img) != most_length:
        continue  # 不是目标图片,跳出继续
    else:
        pic = urllib2.urlopen(img).read()
        f = open(r"%s\%s%s.jpg" % (file_path, x, random.choice(string.ascii_letters)), "wb+")
        f.write(pic)
        f.close()
        x += 1

5、完整程序如下。

# -*- coding:UTF-8 -*-
import urllib
import urllib2
import re
from collections import Counter
import random
import string


def pic_download(url, file_path):
    # 打开网页
    # url = r'http://tieba.baidu.com/p/2166231880'
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    content = response.read()
    # print content

    # 正则表达式
    rule_str = r'src="(.+?\.jpg)"'
    rule = re.compile(rule_str)
    img_list = rule.findall(content)

    print u"正在下载图片..."
    x = 0
    len_temp = []
    for img in img_list:
        len_temp.append(len(img))  # 计算每个图片链接的长度
    most_length = tuple(Counter(len_temp).most_common(1))[0][0]  # 默认需要下载的图片是链接中最多的,寻找最多的图片链接的长度

    for img in img_list:
        if len(img) != most_length:
            continue  # 不是目标图片,跳出继续
        else:
            pic = urllib2.urlopen(img).read()
            f = open(r"%s\%s%s.jpg" % (file_path, x, random.choice(string.ascii_letters)), "wb+")
            f.write(pic)
            f.close()
            x += 1

    print u"%s 张图片已被下载至指定位置" % x

# 主函数
if __name__ == "__main__":
    url = raw_input(r"Please input the BAIDU tieba link:")  # 请输入百度贴吧链接的帖子
    file_path = raw_input(r"Please input the file path(default: C:\Users\Wind\Pictures): ")  # 请输入想要保存图片的位置
    pic_download(url=r'http://tieba.baidu.com/p/1165861759', file_path=r"C:\Users\Wind\Pictures")

 

综上,只要输入百度任意帖子的链接,其中的图片无论是美女还是美景,就全部是你的囊中之物啦。Anyway,Python大法好!最后送上一张美图供大家欣赏~~

杉本有美

原创不易,转载请注明出处。

行走在世界的角落——波多黎各的美妙

波多黎各 (Puerto Rico)是哪个国家?第一次听到这个名字的时候我也非常好奇。Google了一下波多黎各原来并不是一个国家,而是属于美国的一个自由邦。

维基百科的解释是,波多黎各位于加勒比海的大安的列斯群岛东部,是大安地列斯群岛四个大岛中最小的一个岛,位于多米尼加共和国东面,小安地列斯群岛西北。全称波多黎各自由邦(境外领土),是美国在加勒比海地区的一个自治领地,首府圣胡安(San Juan)。波多黎各曾被西班牙殖民,在西班牙语里波多黎各的意思是“富裕之港”。

波多黎各地图位置

促成此次行程的原因,是因为我之前报名参加FIRST安全大会。FIRST安全大会是世界上安全事件响应方向的重要会议,公司也是其安全合作成员之一。FIRST几乎每年都在世界不同的城市举办,前年在德国慕尼黑,去年在韩国首尔,这次这地方也是选的奇葩。什么意思呢?安全圈的朋友有选择去哪个安全大会的时候,一定要选FIRST,嘿嘿。话不多说,赶紧办签证。

1、签证

波多黎各是美国的属地,办理美国签证即可。办签证期间还被政治审核(administration processing),3周后签证到手。讲真被政审AP还在三周内拿到签证,我都在想是不是因为我长太帅了,哈哈哈。开个玩笑,具体流程可以参考我的这篇文章手把手教你拿到美国十年签证

2、机票和酒店

首先机票,机票是我确定航班后公司帮忙定的,免去了很多麻烦事。一般先飞到纽约,从纽约转机4个小时即可到达波多黎各圣胡安。

其次酒店方面,FIRST会议在圣胡安的合作酒店是加勒比希尔顿酒店(Caribe Hilton),太贵超标住不起,于是我选择了附近的凯悦酒店。凯悦酒店到加勒比希尔顿步行也就二十分钟,而且到圣胡安老城那边也很方便,这里暂且不表。凯悦酒店我是直接从缤客booking.com)下单的,也很方便。不知道的怎么订的可以参考我这篇文章

3、行程

到波多黎各旅游一般建议至少2~3天,可以把主要的景点玩一遍。我的行程当然以会议为主,而会议持续一周。怎么玩?答案是利用好零碎时间。

Day 1:

目的地是圣胡安,主要的景点也都集中在这个城市。著名的景点如莫罗古堡、圣胡安老城、圣胡安大教堂、圣克里斯多巴城堡都集中在老圣胡安岛上。岛面积不是很大,所有景点都可以在一天内游玩,景点之间距离不远,步行即可。老城内道路狭窄,不推荐租车前往。

圣胡安历史遗迹——圣克里斯多巴城堡
圣克里斯多巴城堡
圣胡安老城政府
莫罗古堡
莫罗古堡的灯塔成为了圣胡安的标志之一
圣胡安老城街道,蓝色的地砖,各色的建筑,林立的酒吧,不一样的味道

 

Day 2~5:

会议的地方位于加勒比海希尔顿酒店,酒店旁边是属于希尔顿酒店的一片花园,围了一片海。风景那也是极好的,许多老外在这里游泳,躺在长椅上晒太阳。这边有许多蜥蜴,大的吓人,长达半米长。关键还不怕人,在花园里逛来逛去。还放养了两只孔雀,几只鹅。

加勒比海
大蜥蜴
孔雀蜥蜴与鹅
海边玩耍的人

Day 6:

世界上知名的有五大荧光海,其中三个在波多黎各。说到荧光海,我首先想到的是李安电影《少年派》中的场景:

当然,电影里面的光是来源于海中的发光生物,比如水母和鱼等,有夸张的手法在里面。

这个地方我也许这辈子就来这一次,所以真实的荧光海,自然是不能错过。真实的荧光海是由于水底的微生物发出的光,光线非常微弱,只能在晚上肉眼看到,并且一定要在搅动海水的情况下。荧光海由于光非常微弱,小到什么程度呢?你见过柴火燃烧时候出现的火星子吗,对就是那样,转瞬即逝。所以试图靠手机或者相机拍摄下来的,就不要想了。乖乖把装备放到背包里,静下心来享受这段奇妙的旅程吧!

因为光线非常暗,一般会建议避开满月。但是这个也不完全是问题,因为月亮有可能只在白天出现的。不懂的话回去好好学物理吧,哈哈!我们去玩的时候正好是满月,天空一片云也没有,没有看到月亮,也没有看到银河,算是美中不足。是否满月可以到这里看。

波多黎各在东边两个小岛分别叫Vieques & Culebra,大家一般都叫他们V岛和C岛。V岛看荧光海最棒,C岛看沙滩和浮潜~实际上我们是很想去登岛的,但由于时间的关系没办法只能在波多黎各主岛看了。主岛东部的Bio bay也是一个不错的地方,主要玩法是皮划艇加荧光海。Bio bay是由几家公司运营的,玩的内容都一样,就是价格有差别,所以不用太纠结哪里订的会更好。可以上这个网站预约,最好提前预约,否则很可能没位。

https://www.kayakingpuertorico.com/

像这样:

Map of the Bio Bay paddling route.

最后再贴两张网上找的V到和C岛的照片:

有机会一定要去啊~~ Enjoy!

 

日本大阪京都奈良自由行

我的第一次出国是去的以色列出差,长达三十天的行程让我对以色列这个国家有了更多的体会。当时是和同事一起去的,很多事情都被包办了,不能算是完全的自由行。所以啊日本自由行才是我国外自由行的首站,想想就兴奋。

 

WordPress网站内存不够用处理方法

博客上线:2017年4月13日

 

在域名备案通过后,上线第二天,博客挂了。

1、内存不够用,导致MYSQL挂掉

经过分析,是mysql挂掉,查看/alidata/log/mysql,发现如下报错:

130728 6:50:14 [Note] Plugin ‘FEDERATED’ is disabled.
130728 6:50:14 InnoDB: The InnoDB memory heap is disabled
130728 6:50:14 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130728 6:50:14 InnoDB: Compressed tables use zlib 1.2.3.4
130728 6:50:14 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
130728 6:50:14 InnoDB: Completed initialization of buffer pool
130728 6:50:14 InnoDB: Fatal error: cannot allocate memory for the buffer pool
130728 6:50:14 [ERROR] Plugin ‘InnoDB’ init function returned error.
130728 6:50:14 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
130728 6:50:14 [ERROR] Unknown/unsupported storage engine: InnoDB
130728 6:50:14 [ERROR] Aborting
130728 6:50:14 [Note] /usr/sbin/mysqld: Shutdown complete

创建这个博客本来就是想玩一下,配置比较低。没想到刚上线内存就不够用,这WordPress也太耗资源了吧。

2、解决办法:

采用添加/swap目录的方法,内存超出时使用硬盘替代。

1) 在 /etc/mysql/my.cnf 的 mysqld 下增加下面一句:

innodb_buffer_pool_size = 64M

还要设置一下swap分区,因为我的阿里云默认是没有swap分区的,通过fdisk -l 和 1mount 看不到swap的信息,需要手动添加一下。

2) 添加swap分区的步骤:

2.1) dd if=/dev/zero of=/swapfile bs=1M count=1024

2.2) mkswap /swapfile

2.3) swapon /swapfile

2.4) 添加这行: /swapfile swap swap defaults 0 0 到 /etc/fstab

目前网站运行良好,但是总得来说Apache还是比较吃内存,如果经济容许还是建议换个大点的内存,嘿嘿

#转载请注明出处

 

About Me

欢迎来到自由像风的个人博客,本站主要记录笔者个人旅行、生活随笔,亦或技术相关笔记。如果你有好的意见或建议,欢迎联系!

若发现本站有任何侵犯您利益的内容,请及时邮件或留言联系,我会第一时间删除所有相关内容。

邮箱:funywork@126.com

 

友情链接

Kevan’s Blog    美时美刻    顾小北    维基萌    言曌博客    卢松松博客

 

想要加友情链接的朋友可以在下面留言。要求博客半年以上,文章数量30篇以上。申请格式参考:

博客名:最美时刻-探索旅行路上的美时美刻

站点网址:www.msmk.me

站点简单介绍:博客主要记录个人生活旅行随笔,技术相关笔记等。

ps:本网站暂未配置邮箱,所以回复可能会稍晚,但看到一定会回复的。谢谢^_^