- 作业①:
1)实验内容
- 要求:用urllib和re库方法定向爬取给定网址(https://www.shanghairanking.cn/rankings/bcsr/2020/0812 )的数据。
- 输出信息:
2)实验思路及代码
-
获取html
-
分析网页源代码,可知输出信息中的字段在标签tr的子标签td或孙子标签中,先获取标签td的内容。其中rows存储所有数据,row存储每行数据。count用来对tr标签内的td标签进行排序
-
对于2020排名字段,要依次进入tr->td->div获取内容
-
对于2020排名字段(count=1),要依次进入tr->td->div获取内容;
-
对于全部层次字段(count=3),要依次进入tr->td获取内容;
-
对于学校类型字段(count=4),找到<img alt="学校类型"onerror语句获取内容;
-
对于总分字段(count=5),要依次进入tr->td获取内容;
-
获取下一个标签tr
-
打印输出
3)实验结果
4)实验心得
- 利用re.search()方法一层层进入标签,找到字段,适用于遍历少量子孙节点的情况,对于大量节点十分费劲,应该通过观察网页源代码直接利用正则表达式进行匹配;
- 在寻找标签头时,需要采取非贪婪匹配,否则获取的数据为空;
- 利用正则表达式找到字段后还需要进一步仔细对数据进行格式化输出。
- 作业②:
1)实验内容
- 要求:用requests和Beautiful Soup库方法设计爬取https://datacenter.mee.gov.cn/aqiweb2/ AQI实时报。
- 输出信息:
2)实验思路及代码
-
获取html
-
通过分析网页源代码可知所需字段在标签tbody的孙子标签td中,因此利用beautifulsoup进行解析获取内容。其中lst用于存储数据。
-
输出数据
3)实验结果
4)实验心得
该网页结构十分简单清晰,爬取解析、数据格式处理十分方便。
- 作业③:
1)实验内容
- 要求:使用urllib和requests和re爬取一个给定网页(http://news.fzu.edu.cn/)爬取该网站下的所有图片
- 输出信息:将自选网页内的所有jpg文件保存在一个文件夹中
2)实验思路及代码
-
获取html
-
通过分析网页源代码可知所需字段在标签div的子孙标签img中,因此先找到img标签,获取标签img字段。其中img_url是标签img字段。
-
再找到<img...src="图片的url".jpg|.png|.gif,形成图片的url,并用requests请求写入本地。其中pic_url为图片的url
3)实验结果
4)实验心得
- 通过该题学会了利用图片url路径进行本地下载,其中获取的url需要添加域名才能进行请求;
- 利用正则表达式可以直接查找所需的字段,且html中许多字段都是具有一定格式的,如图片的url,因此一种正则表达式可多次使用。
码云链接:https://gitee.com/jmssj/big-data-acquisition-course/tree/master/第一次大作业