第一次实践

作业①

1)要求:

用urllib和re库方法定向爬取给定网址(https://www.shanghairanking.cn/rankings/bcsr/2020/0812 )的数据。

输出信息:

2020排名 全部层次 学校类型 总分
1 前2% 清华大学 1069.0
2 ... ... ...

1、爬取网页内容:

import urllib.request

url="https://www.shanghairanking.cn/rankings/bcsr/2020/0812"
resp = urllib.request.urlopen(url)
data = resp.read()
html = data.decode()
print(html)

2、使用正则表达式匹配所需内容:

2020排名:

top = re.findall(r'data-v-68e330ae>\n.*?\n                        </div>',html)
top[i].split("\n")[1].strip()

全部层次:

cla = re.findall(r'<td data-v-68e330ae>\n.*?%',html)
cla[i].split("\n")[1].strip()

学校名称:

name = re.findall(r'cn" data-v-b80b4d60>.*?</a>',html)
name[i].split('>')[1].split('<')[0]

总分:

score = re.findall(r'<td data-v-68e330ae>\n.*?\n                    </td>',html)
score[i].split("\n")[1].strip()

3、格式化输出:

print('{x:^{y}s}\t'.format(x="2020排名",y=4-len("2020排名".encode('GBK'))+len("2020排名")), end='')

4、输出结果:

完整代码地址:

作业一:https://gitee.com/flyme10086/data-excavate/blob/master/作业1/work1.py

2)心得体会:

在不使用BeautifulSoup的情况下,re库的使用需要花更多时间寻找网页源码的规律。今后应该保持练习,熟能生巧。

作业②

1)要求:

requestsBeautiful Soup库方法设计爬取(https://datacenter.mee.gov.cn/aqiweb2/) AQI实时报。

输出信息:

序号 城市 AQI PM2.5 SO2 NO2 CO 首要污染物
1 北京 55 6 5 1.0 225 ——
2 ... ... ... ... ... ... ...

1、爬取网页内容:

import requests
from bs4 import BeautifulSoup

url = "https://datacenter.mee.gov.cn/aqiweb2/"
r = requests.get(url)
r.encoding = r.apparent_encoding
html = r.text
print(html)

2、使用BeautifulSoup获得所需内容

soup = BeautifulSoup(html,"html.parser")
tags = soup.find_all("td")
for i in range(len(tags)):
    print(i,tags[i].text)

3、格式化输出:

print('{x:^{y}s}\t'.format(x="序号",y=6-len("序号".encode('GBK'))+len("序号")), end='')

4、输出结果:(部分)

完整代码地址:

作业二:https://gitee.com/flyme10086/data-excavate/blob/master/作业1/work2.py

2)心得体会

此次作业大部分使用的为前几次课堂教学内容,比较简单。

作业③

1)要求:

使用urllib和requests和re爬取一个给定网页(http://news.fzu.edu.cn/)爬取该网站下的所有图片

输出信息:

将自选网页内的所有jpg文件保存在一个文件夹中

1、爬取网页内容:

import urllib.request

url = "http://news.fzu.edu.cn/"
request = urllib.request.Request(url=url)
resp = urllib.request.urlopen(request)
data = resp.read()
html = data.decode()
print(html)

2、使用正则匹配获得所需图片url标签

import re
pic = re.findall(r'<img src=.*?jpg',html)

3、下载图片

for i in range(len(pic)):
    pic_url = pic[i].split('"')[1]
    purl = "http://news.fzu.edu.cn"+ pic_url
    response = urllib.request.urlopen(purl)
    c_img = response.read()
    c_name =str(i+1) + '.jpg'
    with open(c_name,'wb') as f:
        f.write(c_img)

4、输出结果:

完整代码地址:

作业三:https://gitee.com/flyme10086/data-excavate/blob/master/作业1/work3.py

2)心得体会

此任务主要目标是图片的下载,即获取图片的url后用request打开写入本地。较为简单。

posted @ 2021-09-29 20:48  Flyme10086  阅读(48)  评论(0编辑  收藏  举报