1/6Python网络爬虫:Selenium--以携程酒店为例1Selenium简介Selenium是一个用于网站应用程序自动化的工具,它可以直接运行在浏览器中,就像真正的用户在操作一样。它相当于一个机器人,可以模拟人类在浏览器上的一些行为,比如输入文本、点击、回车等。Selenium支持多种浏览器,本文以Chrome浏览器为例。chromedriver是一个驱动Chrome浏览器的驱动程序,针对不同的浏览器有不同的driver。1.1Selenium的优缺点优点:浏览器能请求到的数据,Selenium同样能请求到,爬虫稳定,适用于所有类型的动态渲染网页。缺点:代码量大、容易被反爬、性能低。笔者认为性能低、速度慢是其最大缺点。2浏览器基本操作浏览器基本操作包括打开浏览器、设置窗口大小、设置打开浏览器位置、关闭浏览器、前进、后退、刷新、获取网页代码等。下面先通过代码来演示如何打开网页并设置浏览器窗口的大小以及打开位置:1fromseleniumimportwebdriver2fromselenium.webdriver.chrome.serviceimportService3fromselenium.webdriver.chrome.optionsimportOptions45url='https://hotels.ctrip.com/hotels/396376.html#ctm_ref=hp_htl_pt_pro_01'#携程上海虹桥宾馆主页6service=Service(executable_path=r'D:\anaconda\Scripts\chromedriver.exe')#指定chromedriver位置7opt=Options()8opt.add_argument(9'user-agent="Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/102.0.0.0Safari/537.36"')10opt.add_argument('--disable-blink-features=AutomationControlled')#隐藏浏览器痕迹11driver=webdriver.Chrome(service=service,options=opt)#实例化浏览器对象12#driver.maximize_window()#浏览器窗口最大化13#driver.set_window_position(1000,20)#设置浏览器打开位置14#driver.set_window_size(800,800)#设置浏览器窗口大小15driver.get(url)#打开网页接下来演示如何前进、后退、刷新网页。需要注意的是,Selenium打开不同的网页或者进行前进、后退时,都是在同一个窗口下操作的,不会打开新的窗口:1driver.get('https://hotels.ctrip.com/hotels/396376.html#ctm_ref=hp_htl_pt_pro_01')#打开携程2time.sleep(1)34url2='https://www.jd.com'#打开京东5driver.get(url2)6time.sleep(1)7#获取当前页面源代码接下来用一个表格展示Selenium浏览器的基本操作:浏览器基本操作方法说明get()打开浏览器maximize_window()浏览器窗口最大化set_window_position()设置浏览器打开位置set_window_size()设置浏览器窗口大小back()回退forward()前进refresh()刷新页面page_source获取网页源代码close()关闭当前标签页quit()退出浏览器8driver.back()#回退9time.sleep(1)1011driver.forward()#前进12time.sleep(1)1314driver.refresh()#刷新页面15time.sleep(1)162/63网页元素定位Selenium抓取网页信息是在开发者工具的Elements选项卡里,Selenium定位网页元素主要通过元素的属性值或者元素在HTML里的路径位置,主要的定位方式如下:定位方式方法ID定位driver.find_element(By.ID,'ID')name定位driver.find_element(By.NAME,'NAME')class定位driver.find_element(By.CLASS_NAME,'CLASS_NAME')标签名定位driver.find_element(By.TAG_NAME,'TAG_NAME')xpath定位driver.find_element(By.XPATH,'XPATH')CSS选择器定位driver.find_element(By.CSS_SELECTOR,'CSS_SELECTOR')下面来演示如何定位评论标签,并点击,先看下图:打开携程任意一个酒店页面,这里以上海虹桥宾馆为例,打开开发者工具,点击Elements选项卡左侧的箭头,然后将鼠标悬停在页面“显示所有...条点评”链接上,点击,开发者工具中就自动定位到了选中的标签,在选中的标签上右击--Copy--CopyXPath,这样就复制了该标签的XPath路径,为“//*[@id="ibu-hotel-detail-head"]/div[2]/div[2]/div[1]/div/div/div[1]/p[2]”,然后调用click()方法点击,代码如下:1element_comment=driver.find_element(By.XPATH,2'//*[@id="ibu-hotel-detail-head"]/div[2]/div[2]/div[1]/div/div/div[1]/p[2]')3element_comment.click()4网页元素操控...