获取数据部分

整体思路

首先要确定要访问的网址,通过打开网页可以获得。
同时在网页中按Fn+F12进入开发者模式界面,选择Network,进行刷新网页,可以记录网页的请求,将小红点按灭,表示停止记录。

在这里插入图片描述
点击下方的请求,可以看到打开的douban网页,点击douban会出现详细信息。
在这里插入图片描述
下来列表,在最后能看到User-Agent,这是我们需要的头部信息,需要保存下拉,用这个身份我们可以伪装成浏览器进行服务器访问。
然后通过urllib.request.Request()对我们的信息进行封装,括号中需要填入我们的目标网址和头部信息,头部信息需要用字典键值对的形式进行存储。
再然后我们通过urllib.request.urlopen()的方式将封装好的内容进行打开,将得到的信息存储在字符串中进行打印输出,这就是我们得到的第一个网页的的信息了。
由于不止一个网页,所以我们在爬取网页的时候要通过for循环进行多次爬取,将爬取代码写入for循环的循环体中。
注意:在爬取的时候难免会遇见错误与异常,所以我们要加入异常捕获机制,将爬取网页的部分代码写入try中,将可能发生的异常进行捕获,其中可能打印输出错误代码或者打印输出错误原因。

代码编写

import urllib.request
def main():
    baseurl = "https://movie.douban.com/top250?start="  #是我们要访问的基础网页
    getData(baseurl)  #爬取网页信息的函数,向函数传入网址
def getData(baseurl):
    for i in range(0,10):  #网页一共250条信息,分10页存储,所以要进行十次访问
        url = baseurl + str(i*25)  #传入的是基础网址,即打开的第一页,要继续访问需要对baseurl进行改装
        html = askurl(url)  #进行信息输出的函数,html保存网页源码
        #接下来要进行数据逐一分析
def askurl(url):
    head = {  #头部信息用于伪装
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/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:  #可能会出现404等错误
        if hasattr(e,"code"):  #可以进行条件判断
            print(e.code)  #错误代码
        if hasattr(e,"reason"):
            print(e.reason)  #错误原因
    return html  #将内容返回给getData函数
if __name__ =="__main__":  #程序入口
    main()

可以在程序执行框中看到返回的信息
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值