数据采集与融合技术实验5

作业①:

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

·1爬取图片信息
`
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"

`

·2解析其他信息

`
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(",", "")

`

·3进行图片保存

def download(self, src1, src2, mFile):
   page_data = None
    if src1:
        try:
            req = urllib.request.Request(src1, headers=MySpider.headers)
            resp = urllib.request.urlopen(req, timeout=10)
            data = resp.read()
        except:
            pass
    if not data and src2:
        try:
            req = urllib.request.Request(src2, headers=MySpider.headers)
            resp = urllib.request.urlopen(req, timeout=10)
            data = resp.read()
        except:
            pass
    if data:
        print("start lowdown", mFile)
        fobj = open(MySpider.imagePath + "\\" + mFile, "wb")
        fobj.write(data)
        fobj.close()
        print("download finish", mFile)`

·4结果展示

5gitee链接
第一题

6实验感悟
学习到了如何用selenium和xpath的方法爬取图片并保存本地和数据库,为以后的学习奠定了基础

作业②

要求
熟练掌握 Selenium 查找HTML元素、实现用户模拟登录、爬取Ajax网页数据、等待
HTML元素等内容。

使用Selenium框架+MySQL爬取中国mooc网课程资源信息(课程号、课程名称、教学
进度、课程状态,课程图片地址),同时存储图片到本地项目根目录下的imgs文件夹
中,图片的名称用课程名来存储。

候选网站
中国mooc网:https://www.icourse163.org

·1创建数据库

`
def openDB(self):
self.con=sqlite3.connect("CourseStatus.db")
self.cursor=self.con.cursor()
try:
self.cursor.execute("create table CourseStatus (Id varchar(16),cCourse "
"varchar(64),cCollege varchar(64),"
"cSchedule varchar(64),"
"cCourseStatus varchar(64),cImgUrl varchar("
"256),"
"constraint pk_course primary key (Id,cCourse))")
except:
self.cursor.execute("delete from CourseStatus")

`

·2编写登录函数
`
def login():

driver.get('https://www.icourse163.org/')

driver.set_window_size(1300, 800)

driver.find_element(By.XPATH,'//div[@class="u-navLogin-loginBox"]//div[@class="unlogin"]/a').click()

time.sleep(20)

`

·3解析网页数据
`
course = div.find_element(By.XPATH,'.//div[@class="title"]//span['
'@class="text"]').text
# 解析院校
college = div.find_element(By.XPATH,'.//div[@class="school"]/a').text
# 解析已学学时
schedule = div.find_element(By.XPATH,'.//div[@class="status"]//span['
'@class="course-progress-text-span"]').text
# 解析课程开设时间
courseStatus = div.find_element(By.XPATH,'.//div['
'@class="course-status"]').text
print(count,course,college,schedule,courseStatus,src_path)
# 数据保存
db.insert(count,course,college,schedule,courseStatus,src_path)
print(str(count) + 'inserted')

·4结果展示

·5gitee链接
第二题

·6心得体会
学会了如何操纵网页驱动器获取登陆后的数据,并且进行图片和信息的获取,进一步熟悉了Selenium框架,Selenium 查找HTML元素、爬取Ajax网页数据。

作业③

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

任务一:开通MapReduce服务

2、Python脚本生成测试数据

查看数据

·任务三配置kafka

任务四:安装Flume客户端

任务五:配置Flume采集数据

6心得体会
通过此次配置我了解到了华为云与云计算的一些皮毛,为以后的学习奠定了基础

`

posted @ 2021-12-07 14:13  鸿影虹影  阅读(51)  评论(0编辑  收藏  举报