python爬虫自学1-爬取静态网页-2022-02-10

断断续续学了一旦python的语法,然而一不用就又丢了。没办法就只能找点事来练练手,爬虫似乎比较简单(小白,勿喷),就试试呗。

一、首先说明一下:

时间:2022-02-10,时间关系到网站能否(爬虫)访问,以及一些库的版本。

开发环境:win10 64位系统,IDE pycharm PyCharm 2019.3.3 (Professional Edition)
python版本:Python 3.8.7 (tags/v3.8.7:6503f05, Dec 21 2020, 17:59:51) [MSC v.1928 64 bit (AMD64)] on win32

二、访问的网页

https://www.shanghairanking.cn/rankings/bcur/2021

三、抄袭的代码

哈哈哈,代码是跟着某个视频做的。但是还是有部分改动。

import requests
from bs4 import BeautifulSoup
import re

def getHtmlText(url):
    try:
        r = requests.get(url)
        r.raise_for_status()   # 网页打开失败,触发异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "网页打开失败"


def getInfoFromHtml(uLIst,html):
    soup = BeautifulSoup(html,"html.parser")
    param = re.compile(r"\d{1,3}")
    param1 = re.compile(r"\d{1,3}.\d?")

    for child in soup.tbody.children: # 网页源码中有tbody标签
        tds = child('td')
        uLIst.append([param.findall(tds[0].string)[0], child.img.attrs["alt"], param1.findall(tds[4].string)[0]])

   # print(uLIst)


def printList(List,num=20):
    print("{:^10}\t{:^10}\t{:^10}".format("排名","学校名称","综合总分"))
    for i in range(num):
        itm = List[i]
        print("{:^10}\t{:^10}\t{:^10}".format(itm[0],itm[1],itm[2]))


if __name__ == '__main__':
    infoList = []
    try:
        fp = open("url_save",mode="r",encoding="utf-8")    # 尝试去打开文件,打开失败就重新下载
        html = fp.read()  # 全部读出来
        if len(html) < 1000:    # if 不需要使用括号,读取的内容小于1000个字节,也是重新下载
            raise()     # 人为触发异常

    except:     # 文件打开失败的时候,就触发重新爬取一次
        print("文件打开失败,下载网页")
        url = "https://www.shanghairanking.cn/rankings/bcur/2021"
        html = getHtmlText(url)
        # print(len(html))
        fp = open("url_save", mode="w", encoding="utf-8")  # 把爬取的内容写到文件中,供下一次运行使用
        fp.write(html)
        fp.close()

    if len(html) > 1000:
        getInfoFromHtml(infoList, html)
        printList(infoList,25)
    else:
        print("文件内容小于1000个字节,不做解析处理")

这里我增加了一个文件操作,就是把爬下来的网页放在文件中,这样我调试的时候,就不用老是去网站爬取网页了,避免被限制访问。

如果需要重新下载,删除掉缓存文件就好了。

四、结果

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大智兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值