数据采集与融合技术第一次大作业

作业①

1.实验内容

2020排名 全部层次 学校类型 总分
1 前2% 中国人民大学 1069.0
2......

2.心得体会

(1)访问网址对元素进行审查,发现不止有我们要爬取的文本,还有空格符和换行符:

于是对urllib.request爬取到的网页文本进行"\n"和" "的替换:data = data.replace("\n", "").replace(" ", "")

(2)在爬取总分时发现总分为浮点数,于是正则的时候需要对"."进行获取:score = re.findall(r'<td.?>([1-9]\d.?\d*)', data)
在打印爬取信息的过程中发现总分中还包括了排名:['1', '1661.0', '2', '905.0', '3', '806.0', '4', '803.0', '5', '702.0',……]。于是在打印时取总分数组中的奇数元素(数组以0开头):

(3)利用re库进行对网页文本特定内容爬取的时候,如果都是字符串,.*?可以直接使用,如果中文数字符号混合,可以将特定的字符进行体现。re.findall可以对所有信息进行寻找再用for循环对每条信息进行提取。

作业②

1.实验内容

  • 要求:用requests和Beautiful Soup库方法设计爬取https://datacenter.mee.gov.cn/aqiweb2/ AQI实时报。
  • 输出信息:
序号 城市 AQI PM2.5 SO2 No2 Co 首要污染物
1 北京 55 6 5 1.0 225
2......
  • 运行结果截图:
    由于数据量较大截取前24个城市的信息:


2.心得体会

(1)本题利用request库进行网页爬取,它的编写过程更接近正常URL访问过程;而且Beautiful Soup库中的CSS语言也能很简洁地爬取到信息,也方便使用。

(2)本题网址是一个动态网页,但是审查元素和静态网页是一样的。

(3)由于本题是动态网页,爬取会出现数组出界的情况:

作业③

1.实验内容

文件夹截图:

2.心得体会

(1)本题要求用urllib和request一起爬取网页,所以我选择用urllib.request爬取网页文本,用request的get()函数爬取图片。


(2)检查网页元素,发现图片的tag都是img,而我们需要的网址包含在它的属性src中:

所以我们要找到所有的src的值,用re库进行寻找:pic_url = re.findall(r'<img src="(.*?)"', data)

(3)要将图片下载下来需要图片的完整网址,于是在src中的部分网址中寻找其完整网址以便将图片下载下来:

(4)下载图片时想要用网址最后一个"/"进行命名,于是利用split对字符串进行分割:fp = open('picu\'+ str(pic).split('/')[-1], 'wb')

posted @ 2021-09-30 16:21  imperceptibly  阅读(51)  评论(0编辑  收藏  举报