掘金15W沸点简单分析(一)

本文介绍了如何使用Selenium和ChromeDriver配合Python进行网页爬虫,特别是针对需要执行JS的网页。通过Selenium加载掘金沸点页面,解析评论数据,并模拟请求获取沸点接口数据。最后,讨论了数据处理和存储的后续步骤。
摘要由CSDN通过智能技术生成

数据分析之数据采集(仅Web爬虫相关)。本文继续从爬虫入手。不过这次使用的是Python

一、另一种方式的爬虫

爬虫通常是:①得到目标网页URL;②发起HTTP请求得到网页数据;③使用各种方式解析网页得到想要的数据;

通常,在第②步,是不会去执行页面中的JS代码的。有些网站,会使用Ajax异步加载一些数据,然后再渲染到页面上的;或者使用JS对页面Dom做一些修改。这样都会导致第②步请求的页面中缺少、甚至是没有目标数据。这就需在获取到网页数据后,执行页面中的JS代码了。

最早是使用phantomjs+selenium。后面Chrome出了headless模式,基本就一直使用Chrome了。处理逻辑大概:①请求获取网页,执行JS代码;②再将处理过的页面数据进行保存;③后续的处理(解析网页获取数据)。

1.1 Selenium使用示例

我们就以掘金征文为例,获取该文章下所有的评论。

注: 虽然可以直接通过接口获取,但我们假设无法直接获取数据,必须执行完JS才能得到目标数据。

使用Selenium + Chrome,首先需要下载与Chrome版本对应的ChromeDriver

示例代码如下:

self.driver.get(self.article_url)
# 等待评论列表出现
WebDriverWait(self.driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, 'comment-list'))
)
self.save_page()

通过Selenium来操控Chrome加载网页时,通常会遇到这种问题:网络延迟,导致目标数据没有及时下载下来,但此时已将网页保存完毕。最简单的方式是,每次发生加载网页时,调用下time.sleep(5)类似的方式,但这种方式虽然简单但却比较粗暴。更好的办法是使用Selenium提供的WebDriverWait来处理。

官方文档,一定不要错过:selenium-python

1.2 页面的后续处理

将渲染后的网页保存之后,接下来就要解析提取数据了。这次我们使用XPath来解析数据。

还是先分析下网页

数据所处位置为://div[&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值