学期:2021-2022学年第一学期
学 院 | 大数据与智能工程学院 | 年 级、 专 业、 班 | 18级数据科学与大数据技术(专升本)一班 | 姓 名 | 学号 | ||
---|---|---|---|---|---|---|---|
实验项目 名称 | 千峰官网的链接获取 |
实验学时: 3h 同组学生姓名: 王美琴、尤博欣、周青青、李昕辰 实验地点: 9317
实验日期: 实验成绩: 批改教师: 批改时间:
指导教师评阅:
- 实验目的:编写程序,实现千峰官网的链接获取
- 实验原理:requests请求、re正则表达式
- 实验环境 :win10、python3.9、vscode、edge
- 实验步骤:
- 携带请求头请求豆瓣主页
- 使用re正则表达式语法解析网页数据
- 输出获取的数据
核心代码:
import urllib.request
import re
def getlink(url) :
#模拟浏览器
headers ={ "User - Agent" : "Mozilla/5.0 (Windows NT 6.1; win64; x64;rv:60. 0)Gecko/20100101 Firefox/60.0",
"Cookie":"Hm_lvt_e7700eea32c656a20709c2c05e79ef93=1638352450; Hm_lpvt_e7700eea32c656a20709c2c05e79ef93=1638352450"}
opener = urllib. request. build_opener()
opener. addheaders = [ headers]
# 井将opener安装为全局
urllib.request.install_opener ( opener )
file = urllib. request. urlopen(url)
data = str(file. read())
print(data)
# 井根据需求构建正则表达式
pat = '(https?://[^\s)";]+(\.(\w|/)*))'
link = re. compile( pat). findall(data)
# 井使用set函数天然去重复元素
link = list(set(link))
return link
# 井指定需要爬取的网页
# url = 'http://www. 1000phone. com/'
url = 'http://www.1000phone.com/js/index.1dcd767c.js'
#获取对应网页中包含的链接地址
linklist = getlink(url)
# print(linklist)
#遍历列表结果分别输出
for link in linklist:
print(link[0])
print(len(linklist))
- 实验结果及分析:
通过requests库,并添加网页请求头,使用代理IP,请求网页url,得到网页数据源代码,并使用re语法,进行数据整理提取,最后直接输出寻找的数据。
- 实验总结:
通过这次爬取千峰网页的链接的实验,小组成员熟悉requests对象的作用是获取所有从客户端提交到服务器的请求信息,requests库中获取客户端对Web服务器发送的各类请求信息,并提供GET方法携带仿照的浏览器UA标识请求页面数据。