版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python网络爬虫:Selenium\hSeleniumSelenium是一个用于网站\h应用程序自动化些行为,比如输入文本、点击、回车等。Selenium支持多种浏览器,本文以Chrome浏览器为例。chromedriver是一个驱动Chrome浏览器的驱动程序,针对不同的浏览器有不同的driver。优点:浏览器能请求到的数据,Selenium缺点:代码量大、容易被反爬、性能低。笔者认为性能低、速度慢是其最大缺点。设置浏览器窗口的大小以及打开位置:fromseleniumimportfromselenium.webdriver.chrome.serviceimportfromselenium.webdriver.chrome.optionsimportOptionsurl'/hotels/396376.html#ctm_ref=hp_htl_pt_pro_01'serviceService(executable_path=r'D:\anaconda\Scripts\chromedriver.exe')指定chromedriveropt='user-agent="Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/opt.add_argument('--disable-blink-features=AutomationControlled')driverwebdriver.Chrome(service=service,options=opt)driver.maximize_window()#driver.set_window_position(1000, driver.get(url)接下来演示如何前进、后退、刷新网页。需要注意的是,Seleniumdriver.get('/hotels/396376.html#ctm_ref=hp_htl_pt_pro_01')url2\h source=接下来用一个表格展示SeleniumSelenium抓取网页信息是在开发者工具的Elements选项卡里,Selenium定位网页元素主要通过元素的属性值或者元素在HTMLIDdriver.find_element(By.ID,namedriver.find_element(By.NAME,classdriver.find_element(By.CLASS_NAME,driver.find_element(By.TAG_NAME,xpathdriver.find_element(By.XPATH,打开携程任意一个酒店页面,这里以上海虹桥宾馆为例,打开开发者工具,点击Elements选项卡左侧的箭头,然后将鼠标悬停在页面“显示所有...条点评”链接上,点击,开发者工具中就自动定位到了选中的标签,在选中的标签上右击--Copy--CopyXPath,这样就复制了该标签的XPath路径,为“//*[@id="ibu-hotel-detail-head"]/div[2]/div[2]/div[1]/div/div/div[1]/p[2]”,然后调用click()方法点击,代码如下:element_comment='//*[@id="ibu-hotel-detail-操控网页元素在网页元素定位后才能执行,Selenium作、鼠标事件操作和键盘事件操作。常规操作包含文本清除、文本输入、单击元素、提交表单、获取元素值等。下面以打开京东首页并在搜索框输入mate60Pro1import3fromseleniumimport
mon.byimport5mon.keysimportKeysurl=driver=input_element=driver.find_element(By.XPATH,input_element.send_keys('mate60Pro',上述例子分别执行了打开京东首页、窗口最大化、定位搜索框位置、输入文本“mate60Pro”下面列出一些实际开发中常见的操作方式:driver.find_element(By.ID,清除Xdriver.find_element(By.ID,获取元素在网页中的坐标位置,坐标格式:{'y':20,driver.find_element(By.ID,driver.find_element(By.ID,判断Xdriver.find_element(By.ID,“”“selected标签的选值”“”fromselenium.webdriver.support.selectimport根据下拉框的value鼠标事件操作由Selenium的ActionChains类来实现。ActionChainsActionChains是鼠标单击事件,reset_actionsclick(element),elementclick_and_hold(element),elementcontext_click(element),elementdouble_click(element),elementdrag_and_drop_by_offset(element,x,y),element是某个元素对象,x是偏移的xy是偏移的y坐标key_down(Keys.CONTROL,element),key_up(Keys.CONTROL,是由Keys定义的键盘事件,elementmove_by_offset(x,y),x是偏移的x坐标,y是偏移的move_to_element(element),elementmove_to_element_with_offset(element,x,是某个元素对象,x是偏移的x坐标,y是偏移的yelementsend_keys(value),valuesend_keys_to_element(element,value)element是某以上方法都是在ActionChains类所定义的类方法,若想使用这些操作方法,必须将ActionChains类实例化后才能调用。以B击网页中的“登录”按钮。1mon.action_chainsimportActionChainsurl=driver=element=driver.find_element(By.CLASS_NAME,'btn_primary上述代码中,首先将ActionChains实例化,实例化的时候传入driver对象。实例化之后就可以直接调用鼠标事件操作方法,这些方法需要传入element对象,element网页中某个标签元素。最后再调用perform方法,这是一个执行命令,因为鼠标可以执行拖拉、长按等持久性的操作,调用perform方法可以让这个鼠标操作马上执行。键盘事件是模拟人为按下键盘的某个按键,主要通过send_keys1mon.keysimportKeysurl=\hdriver=element=driver.find_element(By.XPATH,element.send_keys('我爱添加输入空格键和“教程element.send_keys('教程ctrl+aelement.send_keys(Keys.CONTROL,ctrl+xelement.send_keys(Keys.CONTROL,ctrl+velement.send_keys(Keys.CONTROL,driver.find_element(By.ID,mon.action_chainsimportfromlxmlimportetreeclassdefinitself.opt=self.opt.debugger_address='user-agent="Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/self.opt.add_argument('--self.opt.add_argument('--disable-blink-features=AutomationControlled')self.service=self.driver=webdriver.Chrome(options=self.opt,self.fopen('携程酒店评论.csv''a'encoding='utf-8-sig'self.writer=fieldnames=['score','brief_comment','content','time_location','room_type','room_type2','checkin', deffetch_source(self,value='//*[@id="ibu-hotel-detail-source=ActionChains(driver=self.driver).move_by_offset(400,#执行js代码,滚动条往下拉500js=Python网络爬虫:Selenium--Python网络爬虫:Selenium--以携程酒店为例_selenium爬取携程名宿信息-CSDN2024/7/9count= whilecount<next_button=source=self.driver.page_sourcedefparse_html(self,source):tree=div_list=tree.xpath('//*[@id="ibu_hotel_review"]/div/ul[2]/li/div/div[2]/div[2]/div[position()<fordivinscore=div.xpath('./div/div[2]/div[1]/div/div[1]/strong/text()')score=self.handle_list(score)brief_comment=div.xpath('./div/div[2]/div[1]/div/div[2]/text()')brief_comment=self.handle_list(brief_comment)content=div.xpath('./div/div[2]/div[2]/p/text()')content=self.handle_list(content)time_location=time_location=username=div.xpath('./div/div[1]/div[1]/div/p/text()')username=self.handle_list(username)room_type=div.xpath('./div/div[1]/div[2]/ul/li[1]/span/text()')room_type=self.handle_list(room_type)checkin=div.xpath('./div/div[1]/div[2]/ul/li[2]/span/text()')checkin=self.handle_list(checkin)room_type2=div.xpath('./div/div[1]/div[2]/ul/li[3]/span/text()')room_type2=self.handle_list(room_type2)comment_num=comment_num=self.handle_list(comment_num)dit={'brief_comment':brief_comment,'content':content,'time_location':time_locati
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿科危急值PDCA案例分析
- 电子病历应用水平评级方案
- 行政办公系统账号管理细则
- 高处作业工程动火临近区域控制方案
- 包装机异常停机恢复流程制度
- 扬尘治理分项达标施工管理方案
- 特殊过程质量控制方案
- 涂装线瓶颈排程优化方案编制
- 地下连续墙基坑开挖施工组织设计
- 施工现场临时设施材料进退场管理细则
- DB23∕T 3082-2022 黑龙江省城镇道路设计规程
- 甘肃省定西市市级名校2026届中考冲刺卷物理试题含解析
- 大学试用期考核管理办法
- 江苏棋牌室管理暂行办法
- 小学教育专业专升本试题带答案
- 2024年中国烟草总公司江西省公司考试真题试卷及答案
- 2025年苏州市中考历史试卷真题(含标准答案)
- 心血管疾病的三级预防
- 爱永在 二部合唱简谱
- 上海市浦东新区2024-2025学年高一下学期期中考试英语试卷(含答案)
- 承插型盘扣式钢管脚手架安全技术标准JGJT231-2021规范解读
评论
0/150
提交评论