浏览器抓取网页( 零基础学Python(Python3.exe)下载驱动下载)

优采云 发布时间: 2022-02-10 17:19

  浏览器抓取网页(

零基础学Python(Python3.exe)下载驱动下载)

  使用selenium+chromedriver+xpath爬取动态加载信息

  使用 selenium 实现动态渲染页面的爬取。Selenium 是一个浏览器自动化测试框架。它是用于 Web 应用程序测试的工具。它可以直接在浏览器中运行,可以驱动浏览器执行指定的动作,比如点击、下拉、填充数据、删除cookies等操作,还可以获取浏览器当前页面的源码,就像用户在浏览器中操作。该工具支持的浏览器包括 Internet Explorer、Mozilla Firefox 和 Google Chrome。

  安装硒模块

  首先打开Anaconda Prompt(Anaconda)命令行窗口,然后输入“pip install selenium”命令(如果没有安装Anaconda,可以在cmd命令行窗口执行命令安装模块),然后按回车键) 键,如下图:

  

  操作说明

  Selenium 有很多语言版本,例如:Java、Ruby、Python 等。

  下载浏览器驱动

  selenium模块安装完成后,需要选择浏览器,然后下载对应的浏览器驱动。这时候就可以通过selenium模块来控制浏览器的运行了。这里选择Chrome浏览器Version 98.0.4758.80 (Official Build) (x86_64),然后在()Google Chrome Driver中下载浏览器驱动。如图以下:

  

  操作说明

  下载谷歌浏览器驱动时,请根据您的电脑系统下载相应的浏览器驱动。

  使用硒模块

  谷歌浏览器驱动下载完成后,将名为chromedriver.exe的文件拖放到/usr/bin目录下(与python.exe文件同级路径)。然后需要通过Python代码加载谷歌浏览器驱动,这样就可以启动浏览器驱动,控制浏览器了。

  不同的浏览器有不同的驱动程序。下表列出了不同的浏览器及其对应的驱动程序,如下表所示:

  浏览器DriverLink

  铬合金

  铬驱动程序(.exe)

  IE浏览器

  IEDriverServer.exe

  边缘

  微软WebDriver.msi

  火狐

  壁虎驱动程序(.exe)

  幻影JS

  phantomjs(.exe)

  歌剧

  操作员(.exe)

  苹果浏览器

  SafariDriver.safariextz

  获取京东商品信息,示例代码如下:

  #_*_coding:utf-8_*_

# 作者 :liuxiaowei

# 创建时间 :2/7/22 6:43 PM

# 文件 :获取京东商品信息.py

# IDE :PyCharm

from selenium import webdriver # 导入浏览器驱动模块

from selenium.webdriver.support.wait import WebDriverWait # 导入等待类

from selenium.webdriver.support import expected_conditions as EC # 等待条件

from selenium.webdriver.common.by import By # 节点定位

#from selenium.webdriver.chrome.service import Service

try:

# 创建谷歌浏览器驱动参数对象

chrome_options = webdriver.ChromeOptions()

# 不加载图片

prefs = {"profile.managed_default_content_settings.images": 2}

chrome_options.add_experimental_option("prefs", prefs)

# 使用headless无界面浏览器模式

chrome_options.add_argument('--headless')

chrome_options.add_argument('--disable-gpu')

# 加载谷歌浏览器驱动

driver = webdriver.Chrome(options = chrome_options, executable_path='chromedriver')

# 请求地址

driver.get('https://item.jd.com/12353915.html')

wait = WebDriverWait(driver,10) # 等待10秒

# 等待页面加载class名称为m-item-inner的节点,该节点中包含商品信息

wait.until(EC.presence_of_element_located((By.CLASS_NAME,"w")))

# 获取name节点中所有div节点

name_div1 = driver.find_element(By.XPATH,'//div[@class="sku-name"]')

name_div2 = driver.find_element(By.XPATH, '//div[@class="news"]/div[@class="item hide"]')

name_div3 = driver.find_element(By.XPATH, '//div[@class="p-author"]')

summary_price = driver.find_element(By.XPATH, '//div[@class="summary-price J-summary-price"]')

print('提取的商品标题如下:')

print(name_div1.text) # 打印商品标题

print('提取的商品宣传语如下:')

print(name_div2.text) # 打印宣传语

print('提取的编著信息如下:')

print(name_div3.text) # 打印编著信息

print('提取的价格信息如下:')

print(summary_price.text.strip('降价通知')) # 打印价格信息

driver.quit() # 退出浏览器驱动

except Exception as e:

print('显示异常信息!', e)

  运行程序的结果如下:

  提取的产品标题如下:

  Python零基础学习(Python3.9全彩版)(编程入门项目实践同步视频)

  提取的产品标语如下:

  颜色代码更容易学习。Python编程从入门到实践书籍,网络爬虫、游戏开发、数据分析等深度学习全视频+源码+课后题+实物挂图+学习应用图+电子书+书籍问答

  提取的创作信息如下:

  明天的技术

  提取的价格信息如下:

  京东价格

  ¥72.00 [9.03% off] [价格¥79.80]

  selenium模块的常用方法

  selenium 模块支持多种获取网页节点的方法,其中比较常用的方法如下:

  selenium模块获取网页节点的常用方法及说明

  常用方法说明

  driver.find_element_by_id()

  根据id获取节点,参数为字符类型id对应的值

  driver.find_element_by_name()

  根据名称获取节点,参数为字符类型名称对应的值

  driver.find_element_by_xpath()

  根据XPATH获取节点,参数为字符类型XPATH对应的值

  driver.find_element_by_link_text()

  根据链接文本获取节点,参数为字符类型链接文本

  driver.find_element_by_tag_name()

  根据节点名称获取节点,参数为字符类型节点文本

  driver.find_element_by_class_name()

  根据类获取节点,参数为字符类型类对应的值

  driver.find_element_by_css_selector()

  根据CSS选择器获取节点,参数为字符类型的CSS选择器语法

  操作说明

  上表中所有获取节点的方法都是获取单个节点的方法。如果需要获取多个满足条件的节点,可以在对应方法的元素后面加s。

  除了以上常用的获取节点的方法外,还可以使用driver.find_element()方法获取单个节点,使用driver.find_elements()方法获取多个节点。只是在调用这两个方法时,需要为它们指定by和value参数。by参数表示获取节点的方法,value是获取方法对应的值(可以理解为条件)。示例代码如下:

   # 获取商品信息节点中的所有div节点

name_div = driver.find_element(By.XPATH,'//div[@class="itemInfo-wrap"]').find_elements(By.TAG_NAME, 'div')

# 提取并输出单个div节点的内容

print('提取的商品标题如下:')

print(name_div[0].text) # 打印商品标题

print('提取的商品宣传语如下:') # 打印商品宣传语

print(name_div[1].text)

  运行程序的结果如下:

  提取的产品标题如下:

  Python零基础学习(Python3.9全彩版)(编程入门项目实践同步视频)

  提取的产品标语如下:

  颜色代码更容易学习。Python编程从入门到实践书籍,网络爬虫、游戏开发、数据分析等深度学习全视频+源码+课后题+实物挂图+学习应用图+电子书+书籍问答

  明天的技术

  操作说明

  上述代码中,首先使用find_element()方法获取类值为“itemInfo-warp”的整个节点,然后使用find_elements()方法获取该节点中节点名div的所有节点,最后通过name_div[0].text, name_div[1].text 获取所有div的第一个和第二个div中的文本信息。

  以下是By的其他属性和用法

  按属性使用

  按.ID

  表示根据ID值获取对应的单个或多个节点

  作者:LINK_TEXT

  表示根据链接文本获取对应的单个或多个节点

  作者.PARTIAL_LINK_TEXT

  表示根据部分链接文本获取对应的单个或多个节点

  按名字

  根据name值获取对应的单个或多个节点

  由.TAG_NAME

  根据节点名称获取单个或多个节点

  由.CLASS_NAME

  根据类值获取单个或多个节点

  By.CSS_SELECTOR

  根据CSS选择器获取单个或多个节点,对应的值为字符串CSS的位置

  由.XPATH

  根据By.XPATH获取单个或多个节点,对应值字符串节点位置

  当使用 selenium 模块获取节点中某个属性对应的值时,可以使用 get_attribute() 方法来实现。示例代码如下:

  # 根据XPath定位获取指定节点中的href地址

href = driver.find_element(By.XPATH, '//div[@id="p-author"]/a').get_attribute('href')

print('指定节点中的地址信息如下:')

  运行程序的结果如下:

  指定节点中的地址信息如下:

  %E6%98%8E%E6%97%A5%E7%A7%91%E6%8A%80_1.html

  总结

  这种情况下需要注意的是,加载浏览器驱动,一定要指定chromedriver的路径。语法如下:

   # 加载谷歌浏览器驱动

driver = webdriver.Chrome(options = chrome_options, executable_path='chromedriver') # 本例驱动与爬虫程序在同一路 径

  关闭浏览器页面

  driver.close():关闭当前页面

driver.quit():退出整个浏览器

  这是文章关于使用selenium+chromedriver+xpath爬取动态加载信息的介绍。更多相关selenium chromedriver xpath爬取内容,请搜索编程宝库往期文章,希望以后支持编程宝库!

  下一节:pycharm如何为函数插入文档注释 Python编程技术

  S1 将光标放在功能名称上,点击灯泡,出现菜单。S2 选择输入文档字符串存根,它插入文档注释。S3对每个参数的输入函数注解,返回值注解pycha...

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线