项目遇到瓶颈,所以上周的学习笔记也没有写。周五周六花了两天,打算看一下python调节一下心情。
Python语言创始于1989年,是一门脚本语言,在数据处理方面很有优势。
Python是一个轻量级工具,安装很方便。Windows下安装见教程:
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738150500472fd5785c194ebea336061163a8a974000
linux自带python。
目前有python3和Python2两个版本,我使用的是python2.7,安装完之后,需要设置环境变量,或者干脆将C:\Python\python.exe复制到C:\Windows\System32,但这使得使用pip工具有点麻烦,需要进入C:\Python\Script\目录。
下面是一段从百度图片上爬取图片的练习代码,在某个目录中输入:python paqutupian.py [keyword] [number of picture] 就能在当前文件夹下爬取[number of picture]张[keyword]的图。
参考资料:
慕课网——北京理工大学python系列教程
voidsky_很有趣儿:http://www.jianshu.com/p/19c846daccb3
Cloudox_:http://blog.csdn.net/cloudox_/article/details/53465923
浮图糊涂:http://blog.csdn.net/qq_35028612/article/details/72810884
蓝闪:https://www.cnblogs.com/stan-si/archive/2017/03/02/6484146.html
# Download pictures from image.baidu
# referrance:
# MOOC
# http://www.jianshu.com/p/19c846daccb3
# http://blog.csdn.net/cloudox_/article/details/53465923
# http://blog.csdn.net/qq_35028612/article/details/72810884
# https://www.cnblogs.com/stan-si/archive/2017/03/02/6484146.html
import requests # 抓取网页的第三方库
import urllib # 抓取网页的另一种库
import re # 正则表达式的库
import os # 操作系统调用的库
import string # 字符串处理的库
from sys import argv # 获取命令行输入参数的库
# argv[0] 是函数文件的名字,此处就是paqutupian.py
keyword = argv[1] # 获取第一个参数
NUMBER = int(argv[2]) # 获取第二个参数
root = os.getcwd()+'\\'+ keyword + '\\' # 保存路径为当前目录+以关键词命名的文件夹
if not os.path.exists(root):
os.mkdir(root) # 创建文件夹
i = 0 # page i
num = 0
while num <= NUMBER:
# 百度图片的网址的特点如下:Word = 关键词、pn = 20*页数;
url = "http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word="+keyword+"&pn="+str(20*i)+"&gsm=64&ct=&ic=0&lm=-1&width=0&height=0"
page = urllib.urlopen(url)
html = page.read()
# 以上这段的意思相当于右键网页,查看源代码
reg = 'objURL":"(.*?)"' # 模糊匹配,找objURL":" 与 " 中间的部分
imgre = re.compile(reg) # 不知道在干嘛
imglist = re.findall(imgre, html)
for imgurl in imglist:
num=num+1
if num <= NUMBER:
print imgurl
try:
pic= requests.get(imgurl, timeout=10) # 访问图片的地址
except : #requests.exceptions.ConnectionError:
print '[EEROR] can not download the picture...'
continue
# 以下部分为把图片保存在文件夹中
name = str(num) + ".jpg"
string = root + name
if not os.path.exists(string):
fp = open(string,'wb')
fp.write(pic.content) # pic.content 指pic这网页的二进制形式
fp.close()
else :
break
i = i+1
网友评论