大数据采集与预处理课件:Selenium和ChromeDriver技术应用案例-数据持久化_第1页
大数据采集与预处理课件:Selenium和ChromeDriver技术应用案例-数据持久化_第2页
大数据采集与预处理课件:Selenium和ChromeDriver技术应用案例-数据持久化_第3页
大数据采集与预处理课件:Selenium和ChromeDriver技术应用案例-数据持久化_第4页
大数据采集与预处理课件:Selenium和ChromeDriver技术应用案例-数据持久化_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Selenium和ChromeDriver技术应用案例——网站数据采集本章学习目标分析业务网站新房网的网页结构和内容理解ChromeDriver和Selenium的安装和配置。学会使用ChromeDriver和Selenium实现网站数据采集。熟悉业务网站新房数据采集的需求和流程。使用PyMySQL库实现数据的持久化5.1 任务描述

本案例通过Chrome浏览器综合分析业务网站新房网的网页结构和内容,使用Selenium和ChromeDriver技术来实现贝壳新房网站数据采集。然后通过进一步分析主页后,获取字段为房屋名称(name)、地址(location)、价格(price)、房屋面积(size)的数据。最后,使用pymysql库在MySQL数据管理系统中创建指定的数据库house_database和数据表house_info,实现数据的持久化存储。5.4.3 数据持久化保存前面已经通过编写的爬虫程序实现了业务网站新房网指定页面数据的获取,但是这些数据都只能保存在内存之中,并没有对其进行规范化和持久化的管理。因此,为了能够让数据结构化,使数据之间具有联系,从而更好地面向整个系统,同时提高数据的共享性、扩展性和独立性,降低冗余度,将使用MySQL数据管理系统,本任务使用的数据管理工具是NavicatPremium。下面将通过调用PyMySQL库,使用Python语言实现连接和操作MySQL。1.导必要的库导入PyMySQL库用于在Python中连接和操作MySQL。importpymysql2.使用connect()方法通过传入指定的参数实现对MySQL的登录和具体数据库的连接操作。这里的参数分别是:host表示将要连接的设备地址;localhost表示本机;user和password分别表示登录到MySQL的账户和密码;port表示登录MySQL过程中使用的端口号,在此为3306;database表示在MySQL中已经存在的数据库。最后,将该方法的返回值返回给变量connection。connection=pymysql.connect(host='localhost',user='root',password='xxxx',database='house_database',port=3306)3.使用cursor()方法实现对数据库house_database执行SQL操作基础cursor=connection.cursor()4.定义了函数create_table()该函数接受cursor参数,该参数用于执行数据库操作。在函数内部,使用cursor.execute()方法执行SQL语句,创建名为house_info的数据表,如果数据表已存在则不做任何操作。defcreate_table(cursor):#创建数据表cursor.execute('''CREATETABLEIFNOTEXISTShouse_info(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(255),locationVARCHAR(255),priceVARCHAR(50),sizeVARCHAR(50))''')数据表的结构包括:id(自增主键)、name(最大长度为255的字符串类型)、location(最大长度为255的字符串类型)、price(最大长度为50的字符串类型)、size(最大长度为50的字符串类型)。5.插入信息使用for循环遍历houses列表中的每个房源信息,将信息插入到数据库表中。forhouseinhouses:insert_query="INSERTINTOhouse_info(name,location,price,size) VALUES(%s,%s,%s,%s)"使用INSERTINTO语句将房源信息插入到数据库表中。使用cursor.execute()方法执行插入操作,并通过connectionmit()提交事务。cursor.execute(insert_query,(house['name'],house['location'],house['price'],house['size']))connectionmit()至此就通过使用PyMySQL库实现了Python连接MySQL,并将获取的数据保存到MySQL中。图5-13是数据库中的存储的数据。完整代码如下。importpymysqldefcreate_table(cursor):#创建数据表cursor.execute('''CREATETABLEIFNOTEXISTShouse_info(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(255),locationVARCHAR(255),priceVARCHAR(50),sizeVARCHAR(50))''')defstore_house_info(houses):connection=pymysql.connect(host='localhost',user='root',password='12345678',database='house_database',port=3306)cursor=connection.cursor()try:create_table(cursor)forhouseinhouses:insert_query="INSERTINTOhouse_info(name,location,price,size)VALUES(%s,%s,%s,%s)"cursor.execute(insert_query,(house['name'],house['location'],house['price'],house['size']))connectionmit()exceptExceptionase:

print("Anerroroccurredwhilestoringhouseinformation:",e)finally:cursor.close()connection.close()

图5-13业务网站新房网获取数据持久化此外还可以指定捕获网页页面数,代码如下。importtime fromscraperimportfetch_house_info fromstorageimportstore_house_info fromseleniumimportwebdriver fromselenium.webdrivermon.action_chainsimportActionChains fromselenium.webdrivermon.byimportBydefmain(pages_to_crawl): browser=webdriver.Chrome() browser.maximize_window()browser.get('cq.fang.ke/loupan/') #等待页面加载 time.sleep(5) try: forpageinrange(1,pages_to_crawl+1): houses=fetch_house_info(browser) store_house_info(houses) element=browser.find_element(By.CLASS_NAME,'next') #element.click() #创建ActionChains对象 actions=ActionChains(browser) #移动鼠标到目标元素上方 actions.move_to_element(element).perform() #点击目标元素 actions.click().perform() time.sleep(10)#Addappropriatedelay exceptExceptionase: print("Anerroroccurred:",e) finally: browser.quit() if__name__=="__main__": pages_to_crawl=int(input("Enterthenumberofpagestocrawl:")) main(pages_to_crawl)5.5 小结

本任务通过使用Selenium库实现了从业务网站采集新房数据并将其存储到MySQL数据库的全过程。首先,通过浏览器驱动,代码模拟用户访问网页、定位元素并提取信息。定位采用XPath和CSS选择器等方式,保证准确捕获数据。数据采集函数中使用WebDriverWait和expected_conditions等待特定元素的出现,确保数据获取的准确性。其次,通过pymysql库建立数据库

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论