ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-03-20 11:02:27  阅读:216  来源: 互联网

标签:item Python 基本知识 爬虫 元组 re print data append


**

语法在图中。

**
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结果:在这里插入图片描述

标签:item,Python,基本知识,爬虫,元组,re,print,data,append
来源: https://blog.csdn.net/aaatomaaa/article/details/123608856

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有