------------------------积极的人在每一次忧患中都看到一个机会, 而消极的人则在每个机会都看到某种忧患
1. 认识模块
模块可以认为是一个py文件. 模块实际上是我们的py文件运行后的名称空间
导入模块:
1. 判断sys.modules中是否已经导入过该模块
2. 开辟一个内存
3. 在这个内存中执行该py文件
4. 给这个内存起个名字, 一般用的是py文件的名字。返回给导入方
如果你的py文件是启动文件, 名字是__main__
程序的入口一般是:
if __name__ == "__main__":
pass
2. import
import 模块名
模块名.属性/方法/类
每个模块都有自己的独立的名称空间,每个都有一个global, 互相并不影响
模块.属性 = 值. # 不要这么干
3. from xxx import xxx
from 模块 import 函数/变量
当作自己的变量或者函数来使用
from xxx import * 导入所有
导入的内容都可以起别名 as
第五周周末作业 小爬虫--电影天堂
import re
from urllib.request import urlopen
import json
web_site = "https://www.dytt8.net"
content = urlopen(web_site).read().decode("gbk")
obj1 = re.compile(r'·\[<a href="/html/gndy/dyzz/index.html">最新电影下载</a>\]<a href=\'(?P<url>.*?)\'>.*?</a><br/>', re.S)
obj2 = re.compile(r'<div id="Zoom">.*?片 名(?P<movie_name>.*?)<br />.*?<td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href="(?P<download>.*?)">', re.S)
f = open('movie.json', mode="a", encoding="utf-8")
it = obj1.finditer(content)
for el in it:
url = el.group("url")
url = web_site + url # 获取到子页面的网址
sub_content = urlopen(url).read().decode("gbk")
lst = obj2.findall(sub_content)
movie_name = lst[0][0]
download = lst[0][1]
s = json.dumps({"movie_name":movie_name, "download":download}, ensure_ascii=False)
f.write(s+"\n")
f.flush()
f.close()