Python基本知识使用以及爬虫案例

**

语法在图中。

**
python环境配置在前面文章有,如有需要请自行查找

print(“Hello World!”)

在这里插入图片描述

基本语法:print(“字符串”) print(算术表达式),也可以相加, 字符串用单引号和双引号都可以
print(“字符”*8) 打印8遍。(字符)
在这里插入图片描述
在这里插入图片描述

换行符的使用:
在这里插入图片描述

占位符的使用
在这里插入图片描述

输入与判断的结合(这里有得到输入的值,默认为str,通过强转为int,然后判断。还有个三元运算符。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 3.变量这一块

Python没有变量只有名字 先赋值再使用
命名:不能以数字开始,和其他语言差不多 尽量知意,python会自动判断数据类型。
在这里插入图片描述
要分清全局变量与局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。
在这里插入图片描述

基本运算

  1. — * /这里的/是得到的除法结果, //为原来的整除 %取余数(优先级和其他语言的一样)
    幂运算 35 ==243 2*3 == 8
    在这里插入图片描述
  2. 5.循环这一块,加上列表的知识。

While
在这里插入图片描述
For和其他语言的语法不一样了
在这里插入图片描述
找出单数
在这里插入图片描述
也可以通过for访问数据集合类似的。在这里插入图片描述
用【】的是列表,里面可以存放任意数据类型的值,并且可以通过下标访问,也可以通过-1类似的访问。(代表最后一个元素)在这里插入图片描述
在这里插入图片描述
然后就是列表,元组等都对应着很多方法,列举一下常用的。在这里插入图片描述
比较运算符、 比较第一个就得到结果 list1<list2
list 5 展示五次 list=5扩展为五倍
in 与 not in ‘Tom’ in empty --> True
list.count() 计数
list.index(123) 找到123对应的下标
list.revers() 倒序
list.sort()默认从小排序 list.sort(reverse=True) 从大排
6.continue和break
Continue不执行以下的,再次循环。Break直接退出循环。
在这里插入图片描述

  1. 7.字符串

拼接
在这里插入图片描述
方法有点多。。。
str1 = ‘Tom’ str1[1] -->‘o’
方法:
str1.capitalize()第一个字母大写
casefold() 全部小写
center(width) 居中
count(‘sth’)计数
endwith(‘sth’)是否以sth结尾
find(‘sth’) 找到sth返回首个索引,不在返回-1
join(‘123’) 每个间隔里面加入123
lstrip()去掉左边空格
isinstance(a,str)判断是否是某个类型

  1. 8.字典

使用dict创建,为键值对类型。
在这里插入图片描述
Dict1为用括号的创建方式。在这里插入图片描述
通过key访问,默认都是字符串类型,前面写的a,但是变成了‘a’。在这里插入图片描述
也是通过Kye进行修改在这里插入图片描述
通过clear清空字典在这里插入图片描述
判断某个值是否在里面
在这里插入图片描述

通过pop删除某个元素
在这里插入图片描述

  1. 9.比较操作符

在这里插入图片描述
‘>’、<、==、<=、>=、!=,可以连续使用

  1. 10.集合(set)

集合是无序、可变序列,使用一对大括号界定,元素不可重复,同一个集合中每个元素都是唯一的。集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。
在这里插入图片描述
当不再使用某个集合时,可以使用del命令删除整个集合。集合对象的pop()方法弹出并删除其中一个元素,remove()方法直接删除指定元素,clear()方法清空集合。Add(添加单个元素)。在这里插入图片描述
在这里插入图片描述
集合操作
交集,并集,差集。
在这里插入图片描述

  1. 11.元组(tuples)

元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可以修改其元素。元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号“()”中,而不是方括号中。一个元组可以有很多类型数据。
在这里插入图片描述
只含有一个元素的时候需要在后面加一个逗号。在这里插入图片描述
元组一旦定义就不允许更改。元组没有append()、extend()和insert()等方法,无法向元组中添加元素。元组没有remove()或pop()方法,也无法对元组元素进行del操作,不能从元组中删除元素。从效果上看,tuple()冻结列表,而list()融化元组。
用del删除元组。在这里插入图片描述

  1. 12.序列解包

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
在这里插入图片描述
Items用法得到这个键对值。如果参数个数不够会报错。在这里插入图片描述
Value得到他的值。在这里插入图片描述
使用序列解包遍历enumerate对象在这里插入图片描述

  1. 13.函数分为内置函数和自定义函数

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
在这里插入图片描述
有参数以及返回结果的在这里插入图片描述
就算斐波那契数列第n个值。在这里插入图片描述
Lambda内置函数使用在这里插入图片描述

  1. 14.日期和时间

Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。
时间间隔是以秒为单位的浮点小数。
每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。
Python 的 time 模块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳, 如下实例:
在这里插入图片描述
格式化日期:time.strftime(format[, t])在这里插入图片描述
日历:
Calendar模块有很广泛的方法用来处理年历和月历,例如打印某月的月历:
在这里插入图片描述

  1. 15.文件基本操作

open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
hello.txt里面有世界你好,然后读取出来

这里注意,因为是中文,所以需要把编码格式设置为utf-8在这里插入图片描述

Write()用于写入内容
一般模式有以下几个
w+:先清空所有文件内容,然后写入,然后你才可以读取你写入的内容
r+:不清空内容,可以同时读和写入内容。 写入文件的最开始
a+:追加写,所有写入的内容都在文件的最后在这里插入图片描述

由于读取之后游标移到最后,此时需要使用seek将游标移到前面。
一般读取之后需要关闭文件,以免占用缓冲区,使用的是f.close();

  1. 16.爬虫基础知识(爬取豆瓣前250个电影的信息)

爬虫用到了一些基本的库
Beautifulsoup, urllib, re, xlwt, sqlites
里面还涉及到正则表达式的使用。例如:
findLink = re.compile(r’’),
将得到的数据分别放入数据库和excel里面,创建数据库以及各种初始化的代码都有。多加练习。
#-- codeing = utf-8 --
#@Author : Tom
#@File : douban.py
#@Software : PyCharm

import bs4
from bs4 import BeautifulSoup
import urllib
import urllib.request
import re
import xlwt
import sqlite3

def main():
print(“af”)
baseurl=“https://movie.douban.com/top250?start=”

datalist=getData(baseurl)
#savepath = ".\\豆瓣电影Top250.xls"  保存到excel
dbpath = "movietest.db"
#saveData(datalist,)
saveData2DB(datalist,dbpath)
#askURL(baseurl)
#解析网页

#爬取网页

#链接规则
findLink = re.compile(r’’)
findImgSrc = re.compile(r’<img.src="(.?)"’,re.S) #re.S让换行符包含在内
findTitle = re.compile(r’(.)’)
findRating = re.compile(r’(.)’)
findJudge = re.compile(r’(\d*)人评价’)
findInq = re.compile(r’(.)’)
findBd = re.compile(r’

(.?)

’,re.S)

def getData(baseurl):
datalist = []
for i in range(0,10): #调用获取页面信息的函数,10次
url = baseurl + str(i*25)
#askURL(url)
html = askURL(url) #保存网页

    #逐一解析网页
    soup = BeautifulSoup(html, "html.parser")
    for item in soup.find_all('div',class_="item"):
        #为了测试,查看电影item  print(item)
        data = []     #保存一部电影的所有信息
        item = str(item)

        link = re.findall(findLink,item)[0]
        #print(link)
        data.append(link)
        imgSrc = re.findall(findImgSrc,item)[0]
        data.append(imgSrc)
        titles = re.findall(findTitle,item)
        if(len(titles)==2):
            ctitle = titles[0]    #中文
            data.append(ctitle)
            otitle = titles[1].replace("/","")    #添加外国名
            data.append(otitle)
        else:
            data.append(titles[0])
            data.append(' ')  #留空
        rating = re.findall(findRating,item)[0]
        data.append(rating)

        judgeNum = re.findall(findJudge,item)[0]
        data.append(judgeNum)

        inq = re.findall(findInq,item)
        if len(inq)!=0:
            inq = inq[0].replace("。","")
            data.append(inq)
        else:
            data.append(" ")

        bd = re.findall(findBd,item)[0]
        bd = re.sub('<br(\s+)?/>(\s+)?'," ",bd)      #去掉br
        bd = re.sub('/'," ",bd)
        data.append(bd.strip())
        datalist.append(data)
#print(datalist)
return datalist

#保存数据

#得到指定一个URL的网页内容
def askURL(url):
head = {
“User-Agent”: “Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 86.0.4240.198Safari / 537.36”
} #用户代理,伪装我们是浏览器,告诉浏览器,我们可以收到什么水平的内容

request = urllib.request.Request(url,headers=head)
html=""
try:
  response = urllib.request.urlopen(request)
  html = response.read().decode("utf-8")
  #print(html)
except urllib.error.URLError as e:
    if hasattr(e,"code"):
        print(e.code)
    if hasattr(e,"resson"):
        print(e.resson)
return html

def saveData(datalist,savepath):
print("…save")
book = xlwt.Workbook(encoding=“utf-8”)
sheet = book.add_sheet(“豆瓣电影”,cell_overwrite_ok=True)
col = (“电影详情连接”,“图片链接”,“影片中文名”,“影片外国名”,“评分”,“评价数”,“概述”,“相关信息”)
for i in range (0,8):
sheet.write(0,i,col[i])
for i in range (0,250):
print(“第%d条” %(i+1))
data = datalist[i]
for j in range(0,8):
sheet.write(i+1,j,data[j])
book.save(“student.xls”)

def saveData2DB(datalist,dbpath):
#init_db(dbpath)
conn = sqlite3.connect(dbpath)
cur = conn.cursor()

for data in datalist:
    for index in range(len(data)):
        if index == 4 or index == 5:       #数字,不需要转换
            continue
        data[index] = '"'+data[index]+'"'          #将其变为字符串,可以拼接,插入,开始的出来的时候不是字符串
    sql = '''
        insert into movie250(
        info_link,pic_link,cname,ename,score,rated,instroduction,info)
        values(%s)
        '''% ",".join(data)
    cur.execute(sql)
    conn.commit()

cur.close()
conn.close()

def init_db(dbpath):
sql = ‘’’
create table movie250
(id integer primary key autoincrement,
info_link text,
pic_link text,
cname varchar,
ename varchar,
score numeric,
rated numeric,
instroduction text,
info text
)
‘’’
conn = sqlite3.connect(dbpath)
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
conn.close()

if name ==“main”: #调用函数
main()
#init_db(“movietest.db”)
print(“爬取完毕!”)

结果:
在这里插入图片描述
Excel结果:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值