JavaScript 动态渲染页面爬取(一) —— 基于 Selenium

一、安装 Selenium

利用 Ajax 接口 爬取数据的方法通常有两种:

  1. 一种是深挖其中的逻辑,把请求需要的参数的构造逻辑完全找出来,在使用 Python 代码复现,构造 Ajax 请求;
  2. 另一种是直接模拟浏览器的运行,绕过这个过程,因为在浏览器里是可以看到这个数据的,所以如果能把看到的数据直接爬取下来,当然就能获取对应的信息了。

两种方式各有优劣,具体采用哪一种,需要根据实际情况进行分析。举个简单例子:如果你的工作时间紧任务重,老板数据要得着急,网站请求参数构造的逻辑又相对复杂,我们可以采取第 2 种方式先拿到数据,性能什么的可以先暂时忽略。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
当需要爬取动态页面时,可以使用Selenium库来模拟浏览器行为,实现动态页面爬取。下面是使用Selenium爬取动态页面的一般步骤: 1. 安装Selenium库:使用pip命令安装Selenium库,可以在命令行中执行以下命令进行安装: ``` pip install selenium ``` 2. 下载浏览器驱动:Selenium需要与特定浏览器的驱动程序进行交互,所以需要下载对应浏览器的驱动。常见的浏览器驱动下载地址如下: - Chrome驱动:https://sites.google.com/a/chromium.org/chromedriver/downloads - Firefox驱动:https://github.com/mozilla/geckodriver/releases - Edge驱动:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ 下载对应版本的驱动,并将驱动程序所在路径添加到系统环境变量中。 3. 创建WebDriver对象:根据需要使用的浏览器类型,创建对应的WebDriver对象。例如,如果使用Chrome浏览器,可以使用以下代码创建WebDriver对象: ```python from selenium import webdriver driver = webdriver.Chrome() ``` 4. 打开网页:使用WebDriver对象的`get()`方法打开需要爬取的网页。例如,要爬取百度首页,可以使用以下代码: ```python driver.get("https://www.baidu.com") ``` 5. 操作页面元素:使用WebDriver对象提供的方法,如`find_element_by_xpath()`、`find_element_by_css_selector()`等,定位到需要操作的页面元素,并进行相应的操作。例如,要输入搜索关键字并点击搜索按钮,可以使用以下代码: ```python search_input = driver.find_element_by_id("kw") search_input.send_keys("Selenium") search_button = driver.find_element_by_id("su") search_button.click() ``` 6. 等待页面加载:由于动态页面可能需要一些时间来加载数据,为了确保页面加载完成,可以使用WebDriver提供的等待方法,如`implicitly_wait()`、`WebDriverWait()`等。例如,可以使用以下代码等待10秒钟: ```python driver.implicitly_wait(10) ``` 7. 提取数据:使用WebDriver对象提供的方法,如`find_element_by_xpath()`、`find_elements_by_css_selector()`等,定位到需要提取的数据,并进行相应的处理。例如,要提取搜索结果的标题,可以使用以下代码: ```python results = driver.find_elements_by_css_selector(".result .t a") for result in results: print(result.text) ``` 8. 关闭浏览器:爬取完成后,记得关闭WebDriver对象,释放资源。可以使用以下代码关闭浏览器: ```python driver.quit() ``` 这是一个简单的使用Selenium爬取动态页面的示例,具体的操作根据实际情况可能会有所不同。你可以根据自己的需求进行相应的调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amo Xiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值