数据的获取

好耶!激动人心的时刻就要来了,经过前面一段时间的折腾后,我们总算可以搞搞数据了,开搞!

1、引入库(我也不知道是不是这么叫,不管它)

import urllib.request

2、总体思路,那么这次我们总共是四个函数,一个主函数,三个副函数,主函数负责调用副函数,副函数执行各自的功能,下面依次给出主副函数

(1)主函数

---------------------------------------------------------------------------------------------------------------------------------

def main():
    baseurl = "https://movie.douban.com/top250"
    #1、爬取网页
    datalist = getData(baseurl)
    savepath = ".\\豆瓣电影top250.xls"
    #3、保存数据
    saveData(savepath)
    #askURL("https://movie.douban.com/top250?")

--------------------------------------------------------------------------------------------------------------------------------

(2)副函数1

---------------------------------------------------------------------------------------------------------------------------------

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

    #2、统一解析数据
    return datalist

---------------------------------------------------------------------------------------------------------------------------------

(3)副函数2

---------------------------------------------------------------------------------------------------------------------------------

def askURL(url):
    head = {
        "User-Agent": "Mozilla/5.0(Windows NT 10.0;Win64;x64) AppleWebKit/537.36(KHTML, likeGecko) Chrome/101.0.4951.54Safari/537.36Edg/101.0.1210 .39"
    }
    #用户代理,表示告诉豆瓣服务器,我们是什么类型的机器,浏览器(本质上是告诉历览器,我们能接受什么水平的文件内容 )

    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,"reason"):
            print(e.reason)

    return html

---------------------------------------------------------------------------------------------------------------------------------

(4)副函数3

---------------------------------------------------------------------------------------------------------------------------------

def saveData(savepath):
    print("save.....")

---------------------------------------------------------------------------------------------------------------------------------

最后,我们给它加一个入口

if __name__ == "__main__":
    getData("https://movie.douban.com/top250?")

此时,大功基本已经告成,为了加强学习,我们在这里对最后一个入口进行说明。

if __name__ == "__main__":

这是一个控制语句,我们新建一个文档,命名为test1,对其进行理解

print("hello world")
if __name__ == "__main__":
    print("hello")

输入以下代码,我们看到运行结果

D:\program\python\python\python.exe D:/program/python/douban/test控制语句.py
hello world
hello

进程已结束,退出代码0

可以看到,该语句无论之前之后的代码全部被执行了

---------------------------------------------------------------------------------------------------------------------------------

我们再建一个文件夹

这次,我们把test1进行引入

import test1

就给这样一行代码,我们来看运行结果

---------------------------------------------------------------------------------------------------------------------------------

D:\program\python\python\python.exe D:/program/python/douban/test2.py
hello world

进程已结束,退出代码0

---------------------------------------------------------------------------------------------------------------------------------

可以看到,在test1中该语句之前的代码并没有被执行,只执行了之后的代码。

if_name_ == “_main_”:的运行原理:

【__name__属性】: __name__属性是Python的一个内置属性,记录了一个字符串。

若是在当前文件,__name__ 是__main__;

 若是导入的文件,__name__是模块名。

通过我们的例子可以看到,我们把test1   import到另外一个test2中,在test1中三行代码都能很好的执行,可是在test2中,被import后的test1只执行了if_name_ == "_main_":后面的代码,也就是说,这玩意被加入后分两种情况:

(1)如果在同一个文件下,那它没有影响

  (2)如果不在同一个文件下,你将一个文件import到另外一个文件夹中,那么,在该语句存在的那个文件夹中在该语句之前的代码不会执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值