数据采集第五次大作业
作业①:
要求:
熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。
使用Selenium框架爬取京东商城某类商品信息及图片。
候选网站:http://www.jd.com/
关键词:学生自由选择
输出信息:MYSQL的输出信息如下:
mNo | mMark | mPrice | mNote | mFile |
---|---|---|---|---|
000001 | 三星Galaxy | 9199.00 | 三星Galaxy Note20 Ultra 5G... | 000001.jpg |
000002...... | ||||
解题步骤(本题为代码复现) | ||||
本题主要需要注意的是处理爬取时的特殊情况 |
try:
note = li.find_element_by_xpath(".//div[@class='p-name p-name-type-2']//em").text
mark = note.split(" ")[0]
mark = mark.replace("爱心东东\n", "")
mark = mark.replace(",", "")
note = note.replace("爱心东东\n", "")
note = note.replace(",", "")
except:
note = ""
mark = ""
有时会出现一些无关文本,需要替换或去除
- 运行结果:
1)终端结果
2)数据库结果
3)文件夹图片保存结果
- 实验心得
1)熟悉selenium爬取并存取数据库和下载图片
2)强化了处理一些特殊文本的意识
代码地址:https://gitee.com/zhubeier/zhebeier/blob/master/第五次大作业/第一题
作业②:
要求:
熟练掌握 Selenium 查找HTML元素、实现用户模拟登录、爬取Ajax网页数据、等待HTML元素等内容。
使用Selenium框架+MySQL模拟登录慕课网,并获取学生自己账户中已学课程的信息保存到MySQL中(课程号、课程名称、授课单位、教学进度、课程状态,课程图片地址),同时存储图片到本地项目根目录下的imgs文件夹中,图片的名称用课程名来存储。
候选网站:中国mooc网:https://www.icourse163.org
输出信息:MYSQL数据库存储和输出格式
表头应是英文命名例如:课程号ID,课程名称:cCourse……,由同学们自行定义设计表头:
Id | cCourse | cCollege | cSchedule | cCourseStatus | cImgUrl |
---|---|---|---|---|---|
1 | Python网络爬虫与信息提取 | 北京理工大学 | 已学3/18课时 | 2021年5月18日已结束 | http://edu-image.nosdn.127.net/C0AB6FA791150F0DFC0946B9A01C8CB2.jpg |
2...... |
解题步骤:
STEP1 在mysql建立mooc数据库以及表MC,然后建立数据库连接
STEP2 模拟chrome浏览器登录Mooc
driver = webdriver.Chrome()
driver.get('https://www.icourse163.org')
driver.maximize_window()
time.sleep(2)
driver.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/div[3]/div[3]/div').click()
time.sleep(2)
driver.find_element_by_xpath('//*[@class="zcnt"]/div/div/div/div/div[2]/span').click()
driver.find_element_by_xpath('//*[@class="mooc-login-set"]/div/div/div[1]/div/div[1]/div[1]/ul/li[2]').click()
time.sleep(1)
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[1])#登录界面是一个嵌套在html里的另一个html文件,必须要切换
idinput = driver.find_element_by_xpath('//*[@id="phoneipt"]').send_keys("18133010322")
time.sleep(1)
passwdinput = driver.find_element_by_xpath('//*[@class="j-inputtext dlemail"]')
passwdinput.send_keys("Zbenotfound404")
time.sleep(1)
driver.find_element_by_xpath('//*[@id="submitBtn"]').click()
time.sleep(3)
STEP3 进入“我的课程”页面,找到对应属性的xpath路径,开始爬取
driver.find_element_by_xpath('//*[@id="privacy-ok"]').click()
driver.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/div[3]/div[4]/div').click()
cCourse_list = driver.find_elements_by_xpath('//*[@class="course-card-wrapper"]/div/a/div[@class="img"]/img')
cCollege_list = driver.find_elements_by_xpath('//*[@class="course-card-wrapper"]/div/a/div[@class="body"]/div[1]/div[@class="school"]/a')
cSchedule_list = driver.find_elements_by_xpath('//div[@class="course-card-wrapper"]//div[@class="box"]//div[@class="body"]//div[@class="text"]//a/span')
cCourseStatus_list = driver.find_elements_by_xpath('//*[@class="course-card-wrapper"]/div/a/div[@class="body"]/div[2]/div[@class="course-status"]')
img_url = driver.find_elements_by_xpath('//*[@class="course-card-wrapper"]/div/a/div[@class="img"]/img')
for i in range(len(cCourse_list)):
cCourse = cCourse_list[i].get_attribute('alt')
cCollege = cCollege_list[i].text
cSchedule = cSchedule_list[i].text
#print(cSchedule)
cCourseStatus = cCourseStatus_list[i].text
clmgUrl = img_url[i].get_attribute('src')
print(cCourse+"\t"+cCollege+"\t"+cSchedule+"\t"+cCourseStatus+'\t'+clmgUrl+'\t')
cursor.execute("insert into mc values (%s,%s,%s,%s,%s,%s)",(i+1,cCourse,cCollege,cSchedule,cCourseStatus,clmgUrl))
db.commit()
运行结果:
1)终端结果:
2)数据库结果:
3)图片保存结果:
- 实验心得:
1)selenium是模拟用户操作网页,比较直观,容易理解。更加熟悉了selenium点击->定位->爬取的过程
2)了解了登录界面有一个“iframe”,即文档中的文档,在定位其中的元素时需要先定位到“iframe”标签并转换过去
代码地址:https://gitee.com/zhubeier/zhebeier/blob/master/第五次大作业/第二题
作业③:Flume日志采集实验
要求:掌握大数据相关服务,熟悉Xshell的使用
完成文档 华为云_大数据实时分析处理实验手册-Flume日志采集实验(部分)v2.docx 中的任务,即为下面5个任务,具体操作见文档。
环境搭建
任务一:开通MapReduce服务
实时分析开发实战:
任务一:Python脚本生成测试数据
任务二:配置Kafka
任务三:安装Flume客户端
任务四:配置Flume采集数据
过程截图:
任务一:python脚本生成测试数据
任务二:配置kafka
任务三:安装Flume客户端
进入目录
解压压缩包
解压“MRS_Flume_ClientConfig.tar”文件
安装Flume环境变量
解压Flume客户端
安装 FLume客户端
重启Flume服务
任务四:配置Flume采集数据
实验心得:
1)初步接触了基于华为云的实验,初次感受到“云”的概念