数据采集与融合技术实践第五次作业

发布时间:2022-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了数据采集与融合技术实践第五次作业脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

数据采集与融合技实践第五次作业

姓名:刘心怡 学号:031904134 班级:2019级大数据一班

作业①

1)实验内容及结果

①实验内容

要求:熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。使用Selenium框架爬取京东商城某类商品信息及图片。 候选网站:http://www.jd.COM/ 关键词:学生自由选择 输出信息:

mNo mMark mPRice mNote mFile
000001 三星Galaxy 9199.00 三星Galaxy Note20 Ultra 5G... 000001.jpg
000002......

②实验步骤

检查元素得

数据采集与融合技术实践第五次作业

因此提取li代码为:

time.sleep(1)
print(self.driver.current_url)
lis =self.driver.find_elements_by_xpath("//div[@id='J_goodsList']//li[@class='gl-item']")

检查内部具体元素属性

数据采集与融合技术实践第五次作业

因此编写爬取代码为:

try:
    src1 = li.find_element_by_xpath(".//div[@class='p-img']//a//img").get_attribute("src")
except:
    src1 = ""
try:
    src2 = li.find_element_by_xpath(".//div[@class='p-img']//a//img").get_attribute("data-lazy-img")
except:
    src2 = ""
try:
    price = li.find_element_by_xpath(".//div[@class='p-price']//i").text
except:
    price = "0"
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 = ""

因为涉及到翻页,因此查看页面“下一页”按钮属性为:

数据采集与融合技术实践第五次作业

因此编写翻页部分为:

try:
    self.driver.find_element_by_xpath("//span[@class='p-num']//a[@class='pn-next disabled']")
except:
    nextPage = self.driver.find_element_by_xpath("//span[@class='p-num']//a[@class='pn-next']")
    time.sleep(10)
    nextPage.click()
    self.processSpider()

编写写入数据库语句为:

SQL = "insert into phones (mNo,mMark,mPrice,mNote,mFile) values (%s,%s,%s,%s,%s)"
self.cursor.execute(sql, (mNo, mMark, mPrice, mNote, mFile))
self.con.commit()

原本values后部分写为(?,?,?,?,?),后经询问老师发现这是不规范的写法,遂改为如上格式,此外,我的电脑必须写一条提交一条,否则无法写入数据库。

③代码链接

https://gitee.com/lyinkoy/crawl_project/blob/master/作业5/1.py

④运行结果:

数据采集与融合技术实践第五次作业

数据采集与融合技术实践第五次作业

数据采集与融合技术实践第五次作业

2)心得体会

在作业①中系统学习了使用Selenium 查找HTML元素,xpath爬取信息的方法以及MySQL数据库的连接与写入,我在这一实验中在网上查找了许多资料,了解了许多之前被自己忽略的细节。并且注意到了我的脑的写入特点,此外,在写实验报告重新运行时,发现:

数据采集与融合技术实践第五次作业

谷歌它失效了!说是版本有误…于是秉承着“得不到就毁掉”的心态,我卸载重装,检查版本无误后程序运行:

数据采集与融合技术实践第五次作业

果然,卸载重装能解决90%的问题,受益颇多。

作业②

1)实验内容及结果

①实验内容

要求:熟练掌握 Selenium 查找HTML元素、实现用户模拟登录、爬取Ajax网页数据、等待HTML元素等内容。使用Selenium框架+MySQL爬取中国mooc网课程资信息(课程号、课程名称、教学进度、课程状态,课程图片地址),同时存储图片到本地项目根目录下的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......

②实验步骤

首先,要实现页面登录,就要了解页面中各页面按钮的分布,已我的课程为例

数据采集与融合技术实践第五次作业

因此,可编写登录步骤代码为:

driver.find_element_by_xpath('//div[@class="unlogin"]//a[@class="f-f0 navLOGinBTn"]').click()   #登录或注册
sleep(2)
driver.find_element_by_class_name('ux-login-set-scan-code_ft_back').click()              #其他登录方式
sleep(2)
driver.find_element_by_xpath("//ul[@class='ux-tabs-underline_hd']//li[@class='']").click()
sleep(2)
driver.switch_to.frame(driver.find_element_by_xpath("//div[@class='ux-login-set-container']//iframe"))
driver.find_element_by_xpath('//input[@id="phoneipt"]').send_keys("18870067165")        #输入账号
sleep(2)
driver.find_element_by_xpath('//input[@placeholder="请输入密码"]').send_keys("Lxy671032")   #输入密码
sleep(2)
driver.find_element_by_xpath('//div[@class="f-cb loginbox"]//a[@id="submitBtn"]').click()  #点击登录

而点击我的课程这一步最开始的代码为:

driver.find_element_by_xpath('//div[@id="g-body"]//div[@class="_1Y4Ni"]//div[@class="_3uWA6"]').click()

总是点不进去,报这个错误:

数据采集与融合技术实践第五次作业

上网查找资料得:

数据采集与融合技术实践第五次作业

遂修改为如下

sleep(10)
element1 = driver.find_element_by_xpath('//div[@class="_3uWA6"]')#点击我的课程
driver.execute_script("arguments[0].click();", element1)

在编写option时,按照原有的跑了一版,报错如下:

数据采集与融合技术实践第五次作业

在网上搜索资料得:

数据采集与融合技术实践第五次作业

因此修改为:

option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_argument('-enable-webgl')
option.add_argument('--no-sandbox')
option.add_argument('-disable-dev-shm-usage')
driver = webdriver.Chrome(options=option)

而在编写爬取代码时,检查页面元素得:

数据采集与融合技术实践第五次作业

编写代码如下:

divs = driver.find_elements_by_xpath('.//div[@class="course-panel-body-wrapper"]//div')
for div in divs:
    try:
        count += 1
        # print(count)
        course = driver.find_element_by_xpath('//div[@class="title"]/div/span[@class="text"]').text
        college = driver.find_element_by_xpath('//div[@class="school"]/a').text
        schedule = driver.find_element_by_xpath('//div[@class="course-progress"]/div//a/span').text
        coursestatus = driver.find_element_by_xpath('//div[@class="personal-info"]/div[@class="course-status"]').text
        picurl = driver.find_element_by_xpath('//div[@class="img"]/img').get_attribute("src")
        cid = str(count)

运行时报错如下:

数据采集与融合技术实践第五次作业

而询问助教,他说我的代码爬取结构有点问题,于是修改如下:

course = driver.find_elements(By.XPATH,'//*[@id="j-coursewrap"]/div/div[1]/div/div/a/div[2]/div/div/div/span[@class="text"]')
college = driver.find_elements(By.XPATH,'//*[@id="j-coursewrap"]/div/div[1]/div/div/a/div[2]/div/div[@class="school"]/a')
schedule = driver.find_elements(By.XPATH,'//*[@id="j-coursewrap"]/div/div[1]/div/div[1]/a/div[2]/div[2]/div[1]/div[1]/div[1]/a/span')
status = driver.find_elements(By.XPATH,'//*[@id="j-coursewrap"]/div/div[1]/div/div[1]/a/div[2]/div[2]/div[2]')
imgurl = driver.find_elements(By.XPATH,'//*[@id="j-coursewrap"]/div/div[1]/div/div[1]/a/div[1]/img')

③代码链接

https://gitee.com/lyinkoy/crawl_project/blob/master/作业5/2.py

④运行结果:

数据采集与融合技术实践第五次作业

数据采集与融合技术实践第五次作业

数据采集与融合技术实践第五次作业

2)心得体会

在作业②中进一步系统学习了使用Selenium 查找HTML元素,xpath爬取信息的方法以及MySQL数据库的连接与写入,我在这一实验中在网上查找了许多资料,了解了许多之前被自己忽略的细节。并且注意到了我的电脑的写入特点,此外,在运行时发现:

数据采集与融合技术实践第五次作业

查资料得:

数据采集与融合技术实践第五次作业

后检查driver的运行,修改成功。而在后面,又出现了这样的错误:

数据采集与融合技术实践第五次作业

driver失效了,查资料得:

数据采集与融合技术实践第五次作业

重装后解决,受益颇多。

作业③

1)实验内容及结果

①实验内容

要求:理解Flume架构和关键特性,掌握使用Flume完成日志采集任务。完成Flume日志采集实验,包含以下步骤: 任务一:开通Mapreduce服务 任务二:Python脚本生成测试数据 任务三:配置Kafka 任务四:安装Flume客户端 任务五:配置Flume采集数据

②运行结果:

开通MapReduce服务

数据采集与融合技术实践第五次作业

Python脚本生成测试数据

数据采集与融合技术实践第五次作业

配置Kafka

数据采集与融合技术实践第五次作业

安装Flume客户端

数据采集与融合技术实践第五次作业

配置Flume采集数据

数据采集与融合技术实践第五次作业

数据采集与融合技术实践第五次作业

数据采集与融合技术实践第五次作业

2)心得体会

在作业③初步的学习了华为中Flume的基本使用,我在这一实验中尝试了理解Flume架构和关键特性,并且尝试掌握使用Flume完成日志采集任务,受益颇多。

脚本宝典总结

以上是脚本宝典为你收集整理的数据采集与融合技术实践第五次作业全部内容,希望文章能够帮你解决数据采集与融合技术实践第五次作业所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。