selenium新总结与数据抓取新技巧


     作者:龙威

     来源:玩大数据的规划师

"娄底终于放晴了,病树前头万木春,希望早点结束这场浩劫,恢复生机。本期更新两个知识点:一是selenium结合浏览器驱动器的数据爬取可以实现不让浏览器在前端打开显示;二是有些网站的一些数据本身是用网页存成的json数据,无需耗费大量心神去用selenium去抓取。"

01

selenium新技能

在抓取数据的过程中,界面的显示对于用户来说意义不大。除了在小白面前展示一下这种像见了鬼一样的自动化操作,对于完成一件事来说反而是累赘,因为网络的传播与渲染是需要耗时的,目前对于无界面的操作,抱歉我还不知道在后台有没有加载渲染,不过不是重点,重点把两种操作都给大家展示一下。

有界面

能清除的看到整个操作过程,举例百度一下疫情。代码如下:

from selenium import webdriver
import time


driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()




time.sleep(1)
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("疫情")
driver.find_element_by_xpath('//*[@id="su"]').click()
time.sleep(3)


driver.close()

整个操作流程展示动图:

无界面

无界面的好处,当某些操作要做成应用程序,去打开浏览器,那这个软件有点怪。

代码如下:

from selenium import webdriver
import time


# 创建chrome参数对象
opt = webdriver.ChromeOptions()


# 把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数
opt.add_argument('--headless')


# 创建chrome无界面对象
driver = webdriver.Chrome(options=opt) #DeprecationWarning: use options instead of chrome_options
driver.get("https://www.baidu.com/")






time.sleep(1)
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("疫情")
driver.find_element_by_xpath('//*[@id="su"]').click()
time.sleep(3)


text = driver.page_source
print(text)


driver.close()

无界面模式下,开发者可以先通过有界面把代码写好。后续的操作过程把有界面改成无界面即可,视频展示如下:

02

新技巧

其实这个数据抓取也不是什么新技能,只是之前我在抓取Airbnb的时候,我以为是网站提供了api,其实是无意中从网页解析中获得的,这里举例在重温一下步骤。

Airbnb:

那些活动的网页,每次跳转的过程中都会加载一个新的页面。那个新的页面,只要找到那个含json数据的页面,加上python的基础技能,字典,列表,字符串等等,就能提取想要的数据。动态图如下:

selenium新总结与数据抓取新技巧_第1张图片

彩票开奖网:

结构化的数据是最好提取的,网站要呈现结构的数据,我们只需要解析一个,后续的全部依葫芦画瓢解析,构建一个循环即可:

selenium新总结与数据抓取新技巧_第2张图片

最终的每天的结果,修改日期即可:

selenium新总结与数据抓取新技巧_第3张图片


总结:静态页面获取速度快,如果去获取一个动态加载的网页,需要等网页全部加载完再获取,费事费力,更难的可能还需要验证码之类,所有途径,获取json格式网页是我所见最简单的。

◆ ◆ ◆  ◆ 

长按二维码关注我们


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

 笑死人不偿命的知乎沙雕问题排行榜

 用Python扒出B站那些“惊为天人”的阿婆主!

 全球股市跳水大战,谁最坑爹!

● 华农兄弟、徐大Sao&李子柒?谁才是B站美食区的最强王者?

● 你相信逛B站也能学编程吗

你可能感兴趣的:(selenium新总结与数据抓取新技巧)