Python 的基础和爬虫 1、全局变量和局部变量
i=10
def func():
j=10
j+=1
print(j)
func()#调用函数
print(i)
i就为全局变量,j为局部变量,加一个global可以将局部变量变成局部变量。
i=10
def func():
global j
j=10
j+=1
func()
print(j)
2、函数,函数参数,形参和实参
def abc(a,b) :#a,b为形参
print("hi")#该行代码前一直有空格,表示一直处于函数中
abc()
def func1(a,b):
if a>b:
print(a)
else:
print(b)
func1(10,19)
3、python的模块 封装在lib目录下,按照类别和功能组成一个模块,直接导入模块进行使用。比如urllib的request。读取网页,from 要直接定位到文件.py
from urllib.request import urlopen
data1=urlopen("http:/www.baidu.com").read()
print(len(data1))
#
from urllib import request
data2=request.urlopen("http:/jd.com").read()
print(len(data2))#读取网页的长度
可以写py文件,比如abc.py模块的使用方法
def abc:
return"hi"#直接将函数整体作为返回值
import abc
4.python文件操作(实现excel的合并) open("","")创建和打开文件,r只读,r+可读可写,不会创建不存在的文件,从顶部开始写,会覆盖之前此位置的内容;w+可读可写,如果文件存在,则覆盖整个文件,文件不存在,则创建;w只能写,覆盖整个文件,不存在则创建;a只能写,从文件底部添加内容,不存在则创建;a+可读可写,从文件顶部读取内容,从文件底部添加内容,不存在则创建。
fh2=open("F:/file2.txt","wb")#写二进制
fh3=open("F:/file3.txt","r")#读
fh1=open("F:/file1.txt","w")#写
content1="pretty kitty"
fh1.write(content1)
fh1.write("jixjiji")
fh1.close()#打开文件之后,结束后要关闭
readline()和readlines()循环语句逐行读取
fh2=open("F:/file3.txt","r")
line1=fh2.readline()
print(line1)
while True:
line=fh2.readline()
if len(line)==0
break#终止该操作与continue相对应
print(line)
fh2.close()#注意缩进问题
5、异常处理 爬虫时进行异常处理,跳过异常情况,继续爬取。
try:#试着执行这个代码
print("my")
printss("hi")
except Exception as er:#遇到异常捕获异常,er为异常别名
print(er)#如果没有异常处理,后面代码将不处理,比如在for循环中,将自动处理i+1,在不是循环的语句中,是不是要判断出异常的位置?
print("hello")
6.实现多个表格和多个sheet的合并,使用openpyxl()或xlrd,xlsxwriter模块,自动获取多个sheet并进行合并
openpyxl()
wb1=openpyxl.load_workbook()
wb2=openpyxl.load_workbook()
wb3=openpyxl.load_workbook()
wb = openpyxl.Workbook()
wsheet = wb.active
(wb):
sheet = wb.active
column = sheet.max_column
column
(wbcolumn):
ws = wb.active
row_obj(ws.rows):
t=(row_obj)
temp = []
j(column):
temp.append(t[j].value)
wsheet.append(temp)
column1=get_column(wb1)
column2=get_column(wb2)
column3=get_column(wb3)
使用xlrd和xlsxwriter包进行处理
import xlrd,xlsxwriter
#设置要合并的所有文件
allxls=["F:/第一个测试文件","F:/第二个测试文件","F:/第三个测试文件"]
#设置合并到的文件
endxls="F:/endxls.xls"
#打开表格
def open_xls(file):
try:
fh=xlrd.open_workbook(file)
return fh
except Exception as e:
print(str("打开错误,错误为:"+e))
#获取所有sheet
def getsheet(fh):
return fh.sheet()
#读取某个sheet的行数d
def getnrows(fh,sheet):
table=fh.sheets()[sheet]
content=table.nrows
return content
#读取某个文件的内容并返回所有行的值
def getfilect(fh,fl,shnum):#shnum表示sheet的索引0,1
fh=open_xls(fl)
table=fh.sheet_by_name(shname[shnum])
num=getnrows(fh,shnum)
lenvalue=len(rvalue)
for row in range(0,num):#逐行读取
rdata=table.row_values(row)
rvalue.append(rdata)
#print(rvalue[lenrvalue:])
filevalue.append(rvalue[lenrvalue:])
return filevalue
#存储所有读取的结果
filevalue=[]
#存储一个标签的结果
svalue=[]
#存储一个行的结果
rvalue=[]
#存储各sheet名
shname=[]
#打开最终写入的文件
wb1=xlsxwriter.Workbook(endxls)
#创建一个sheet的工作对象
ws=wb1.add_worksheet()
polit=0
linenum=0
#依次遍历每个sheet中的数据
for s in range(0,sn*fn,fn):
thisvalue=getvalue(s)
tvalue=thisvalue[polit:]
#