python的语法简单,可以很好提高个人生产力。我花了2天的时间重零开始学习python,目前已经能做爬虫了。
这篇博客是不管原理,直接干,直接梭的学习博客。这篇博客包含安装基本语法(创建变量、基本函数、判断语法),导入包(系统操作),导入外部开源包(pip3下载包,pyecharts可视化,xlwt包操作excel,Pillow操作图片,Scrapy爬虫)
mac系统中默认安装一个python,一般是python2
,但是python2
已经过时,需要下载python3
。打开终端,输入
python --version # 查看python version
brew search python3
brew install python3 # 安装python3
输入python3
,当前缀是>>>
时,代表安装成功,并可以写代码了。输入熟悉的hello world。
print("hello world")
Python定义对象不用申明类型
name="shixicheng"
id=1
支持对象转化类型
print(int("3"))
print(str(1))
python每句结束不用加;
python支持+
,-
,*
,/
四种运算符,支持次方运算
print(1+5) #加法运算
print(5**3) #次方运算,5的3次方
string可以赋值换行的字符串
info="""
李雷
韩梅梅
学英语
"""
print用于输出,默认输出控制行,亦可输出文件,查看源码定义
def print(self, *args, sep=' ', end='\n', file=None):
参数 | 描述 |
---|---|
args | 输出数据,可以是多个字符串对象 |
sep | 每个字符串对象之间的拼接字符串,默认空格 |
end | 最后一个字符串结尾,默认\n |
file | 打印到某个文件,文件对象 |
输出到文件
f = open(r"/user/marx_luo/download/test.txt",'w');
print("李雷","韩梅梅","莉莉安",sep="-",end=".",file=f)
input()
可以在监控输入并赋值。
name=input("请输入")
print(name)
结果会打印输入的字符串。
f-string
可以把变量赋值到string中,如
name="shixicheng"
company="fcbox"
info=f"""
{name}个人信息
姓名是{name},
公司是{company}
"""
format()
作用与f-string
相似,只是格式不同。
name="shixicheng"
company="fcbox"
"{}个人信息,姓名是{},公司是{}".format(name, name, company)
python的判断和循环与其他语言一样,也是if
,while
,for
。
# if
if a==b:
print(a)
elif a==2:
print(b)
else:
print(3)
python通过缩进来划分代码块,而不是java的
{}
,它并不强制要求缩进是tab、四个空格,两个空格等,只要同一层,空格数一致就可以了。
# while
while a==b:
a=a+1
print(a)
# for ... in
numbers = [1,2,3,4,5,6]
for x in numbers:
print("遍历所有元素{}".format(x))
python通过import
导入其他包,也可以导入包的某个方法
# 导入os包
import os
# 导入os.rmdir方法
from os import rmdir
import os
# getcwd() 获得文件路径
print(os.getcwd())
# rename修改文件名
os.rename("test.txt","demo.txt")
# 新建文件夹
os.mkdir("test")
# 移动本文件夹到
os.chdir("test")
print(os.getcwd())
# 删除文件夹
os.rmdir("test")
# 打印文件夹下文件名和文件夹
print(os.listdir())
import os
if bool(1 - os.path.exists("鸣人")):
os.mkdir("鸣人")
fp = open("hackwork.jpg", 'w')
import shutil
shutil.copyfile("hackwork.jpg", "hackwork-copy.jpg") //复制文件
shutil.copytree("鸣人", "鸣人的影分身") //复制文件夹
shutil.move("hackwork.jpg", "鸣人") // 移动文件到文件夹
python可以下载并导入开源包,推荐使用pip,pip貌似是安装python时安装的。
pip3 install pillow
pip3 list //查看pip安装的插件
pyecharts是将数据生成echarts网页的第三方包。它可以画条形图,饼状图,词云等多种统计图。官方API:http://pyecharts.org/。
柱状图
from pyecharts import Bar
bar = Bar()
name = "服装"
x_axis = ["衬衫", "羊毛衫", "雪纺衫"]
y_axis = [5, 20, 36]
bar.add(name, x_axis, y_axis)
bar.render()
词云
from pyecharts import WordCloud
name = ["666", "赞同", "厉害", "有用", "赞"]
value = [122,32,42,23,11]
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("",name,value)
wordcloud.render("wordcloud.html")
xlwt是一个可以操作excel的开源包,官方API:https://pypi.org/project/xlwt/
workbook = xlwt.Workbook(encoding="utf-8")
worksheet = workbook.add_sheet('第一周')
worksheet = workbook.add_sheet('第二周')
worksheet = workbook.add_sheet('第三周')
worksheet = workbook.add_sheet('第四周')
workbook.save("工作计划.xls")
workbook = xlwt.Workbook(encoding="utf-8")
worksheet = workbook.add_sheet('第一周')
worksheet.write(1,0,label="星期一")
worksheet.write(2,0,label="星期二")
worksheet.write(3,0,label="星期三")
worksheet.write(4,0,label="星期四")
worksheet.write(5,0,label="星期五")
worksheet.write(0,1,label="工作计划")
workbook.save("工作计划2.xls")
pillow可以完成基本图片操作,如增加滤镜,修改大小之类的。
hanmeimeiPic = Image.open("hmm.jpg")
hanmeimeiPic.show()
# 图片处理
zjlImage = Image.open("zjl.jpg")
# 模糊滤镜
blurZjlImage = zjlImage.filter(ImageFilter.BLUR)
blurZjlImage.save('filter/blurZjl.jpg', 'jpeg')
# 高斯模糊
gsBlurZjlImage = zjlImage.filter(ImageFilter.GaussianBlur)
gsBlurZjlImage.save('filter/gsBlurZjl.jpg', 'jpeg')
# 边缘增强
edgeEnhanceZjlImage = zjlImage.filter(ImageFilter.EDGE_ENHANCE)
edgeEnhanceZjlImage.save('filter/edgeEnhanceZjl.jpg', 'jpeg')
# 找到边缘
edgesZjlImage = zjlImage.filter(ImageFilter.FIND_EDGES)
edgesZjlImage.save('filter/edgeZjl.jpg', 'jpeg')
# 浮雕
embossZjlImage = zjlImage.filter(ImageFilter.EMBOSS)
embossZjlImage.save('filter/embossZjl.jpg', 'jpeg')
# 轮廓
contourZjlImage = zjlImage.filter(ImageFilter.CONTOUR)
contourZjlImage.save('filter/contourZjl.jpg', 'jpeg')
# 锐化
sharpenZjlImage = zjlImage.filter(ImageFilter.SHARPEN)
sharpenZjlImage.save('filter/sharpenZjl.jpg', 'jpeg')
# 平滑
smoothZjlImage = zjlImage.filter(ImageFilter.SMOOTH)
smoothZjlImage.save('filter/smoothZjl.jpg', 'jpeg')
# 细节
detailZjlImage = zjlImage.filter(ImageFilter.DETAIL)
detailZjlImage.save('filter/detailZjl.jpg', 'jpeg')
注意: PyCharm创建项目时,会重新导入一个python虚拟机,lib也是空的,不会导入系统下载的pip3包。需要手动copy包文件夹到项目的lib下。 系统默认的lib路径
/usr/local/lib/python3.7/site-packages
项目的lib路径在项目文件夹下的/venv/lib/python3.7/site-packages
Scrapy是流行的爬虫工具,官方API:https://scrapy-chs.readthedocs.io/zh_CN/latest/intro/tutorial.html。pip3下载
pip3 install scrapy
新建文件夹,打开终端并进入文件夹,输入
scrapy startproject tutorial #生成scrapy初始项目
生成的scrapy项目目录
tutorial/
scrapy.cfg
tutorial/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
...
属性
scrapy.cfg
: 项目的配置文件tutorial/
: 该项目的python模块。之后您将在此加入代码。tutorial/items.py
: 项目中的item文件.tutorial/pipelines.py
: 项目中的pipelines文件.tutorial/settings.py
: 项目的设置文件.tutorial/spiders/
: 放置spider代码的目录.编写爬虫类,保存在``tutorial/spiders目录下的
dmoz_spider.py` 文件中:
import scrapy
from tutorial.items import CSDNItem
class CSDNSpider(scrapy.spiders.Spider):
name = "dmoz"
allowed_domains = ["domz.org"]
start_urls = [
"https://blog.csdn.net/luo4105"
]
def parse(self, response):
for sel in response.xpath('//div/div'):
test=sel.xpath('h4/a/text()').extract()
print(test)
进入项目的根目录,执行下列命令启动spider:
scrapy crawl dmoz
得到如下打印
2019-03-31 15:36:03 [scrapy.middleware] INFO: Enabled extensions:
...
2019-03-31 15:36:03 [scrapy.middleware] INFO: Enabled downloader middlewares:
...
2019-03-31 15:36:03 [scrapy.middleware] INFO: Enabled spider middlewares:
...
2019-03-31 15:36:03 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2019-03-31 15:36:03 [scrapy.core.engine] INFO: Spider opened
2019-03-31 15:36:03 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2019-03-31 15:36:03 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2019-03-31 15:36:04 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://blog.csdn.net/robots.txt> (referer: None)
2019-03-31 15:36:04 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://blog.csdn.net/luo4105> (referer: None)
输出json文件
修改爬虫类dmoz_spider.py
import scrapy
from tutorial.items import CSDNItem
class CSDNSpider(scrapy.spiders.Spider):
name = "dmoz"
allowed_domains = ["domz.org"]
start_urls = [
"https://blog.csdn.net/luo4105"
]
def parse(self, response):
for sel in response.xpath('//div/div'):
item = CSDNItem()
item['title']=sel.xpath('h4/a/text()').extract()
item['desc']=sel.xpath('p/a/text()').extract()
yield item
编辑 tutorial
目录中的 items.py
文件:
import scrapy
class CSDNItem(scrapy.Item):
title = scrapy.Field()
desc = scrapy.Field()
scrapy crawl dmoz -o items.json
该命令将采用 JSON 格式对爬取的数据进行序列化,生成 items.json
文件。