十一.再函数进阶+requests网络爬虫

1.函数进阶

调用函数

def fun1():

print('Hello') #这是一个没有返回值的函数

def fun2():

return 'Hello' #函数的返回值是'Hello'

print(fun1()) #调用fun1会执行函数中的print语句,函数没有返回值,所以返回None

print(fun1) #打印fun1对象本身

print(fun2()) #调用fun2函数,并且打印返回值

作用域

全局变量,定义在模块里,整个模块都可以使用 局部变量,定义在函数里,只在函数内部使用

str1=600 #全局变量

def fun3():

global str1 #声明str1是一个全局变量

str1=100

return str1

print(fun3()) #调用一次函数,在函数的外面就可以使用全局变量了

print(str1)

匿名函数

写一个函数,返回某数的平方

def pingfang(n):

return n*n

print(pingfang(3))

匿名函数写法

pingfang2=lambda n:n*n #n是形参,后面的冒号是固定写法,返回值是n*n

print(pingfang2(5))

函数中的列表缺省值

每次调用列表之后,保留上次的值

def add(x,list1=[]):

if x not in list1:

list1.append(x)

return list1

print(add(1)) #一开始,list1=[],放入了1,变为[1]

print(add(2)) #一开始,list1=[1],放入了2,变为[1,2]

print(add(3)) #一开始,list1=[1,2],放入了2,变为[1,2,3]

print(add(6,[100])) #用户传的是[100],放入了6,所以列表变为[100,6]

面向对象中的单例模式

class Single:

def __init__(self): #初始化方法

pass

def __new__(cls, *args, **kwargs): #构造方法

if not hasattr(cls,'obj'): #判断类当中有没有实例对象

cls.obj=object.__new__(cls) #如果没有,则产生一个实例对象

return cls.obj

s1=Single()

s2=Single()

print(s1==s2)

正则表达式 从一段字符串中,提取出需要的字符,返回值是列表

import re

str1='去年今日此门中,人面桃花相映红'

print(re.findall('面(.*?)相',str1)) #前后的值都确定了

print(re.findall('面(.*?)',str1)) #.*?懒惰匹配,在符合规则的情况下,尽可能少的取值

print(re.findall('面(.*)',str1)) #.*贪婪匹配,在符合规则的情况下,尽可能多的取值

str2='abcdeacdebacedb'

print(re.findall('a(.*?)e',str2)) #懒惰匹配['bcd', 'cd', 'c']

print(re.findall('a(.*)e',str2)) #贪婪匹配['bcdeacdebac']

re.S 允许跨行匹配

str3='''Hellownbgnjgh fgdyentbgdvf

ntmjy k hfjgfbtng nbmu,jg hnfnmjt,kg hg

gh5nytbgvfwrf5hytnhbgdWorld'''

print(re.findall('Hello(.*?)World',str3,re.S))

第二节课

2.网络爬虫

import re import requests #网络爬虫模块

url='http://www.quannovel.com/read/489/' #需要进行爬虫的网址

req=requests.get(url)#获取网页内容

name=re.findall('<h2>(.*?)<i c',req.text)[0] #获取书名

mulu=re.findall('class="name ">(第.*?)</a>',req.text) #获取章节目录

Wangzhi=re.findaa(‘’)

(.*?).html',req.text) #获取网址

dict1={} for i in range(len(mulu)): dict1[mulu[i]]=f'{url}{wangzhi[i]}.html' #将目录和网址存放到字典中

print(k,v)

#将九九乘法表写入文件中

with open('D:/九九乘法表210802.txt','w+') as file1:

 for i in range(1,10):

file1.write(f'{j}*{i}={i*j}\t')

 file1.write('\n')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值