前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小笔记:python搜索引擎下拉框截图

小笔记:python搜索引擎下拉框截图

作者头像
江湖安得便相忘
发布2019-10-10 16:38:25
9820
发布2019-10-10 16:38:25
举报

作为一个程序员,被女友提需求也也是常有的事情,最近就来了一个需求,需要截取指定搜索引擎的关键词下拉框截图,就是这种的,只要度娘搜索引擎的。

“小意思,一会就完事”,心中考虑着,先简单实现。

道具

python3 + selenium

chromedriver

google-chrome

说写就写

百度的搜索使用get参数获取关键词,主要是wd起作用,由于仅使用第一页,所以不需要考虑翻页的参数

代码语言:javascript
复制
https://www.baidu.com/s?wd=北京时间

不废话,老规矩,获取到webdriver直接get url

代码语言:javascript
复制
from selenium import webdriver
option = webdriver.ChromeOptions()
option.add_argument('--headless')
option.add_argument('--disable-gpu')
option.add_argument('user-agent="%s"' % user_agent)
driver = webdriver.Chrome(options=option)
driver.get(url)

度娘的下拉框比较友好,直接靠点击事件就可以唤起,所以通过检查元素找到输入框的id

直接右键copy ---> copy xpath,熟悉或者喜欢css selector的同学也可以点击copy ---> copy selector

代码语言:javascript
复制
driver.find_element_by_xpath('//*[@id="kw"]').click();

然后截图

代码语言:javascript
复制
driver.set_window_size(w, h);  # 设置窗口宽高比下拉框稍大一圈即可
driver.save_screenshot(filename);

成果

哎?数据好像和直接访问咋有点不一样呢?先交上去问问咋回事。。。

“不对!你这下拉框截的图不对!这是开启预测的结果,不要这样的,要关闭预测的”

原来还有这个说道,于是在犀利的指导下,知道了开启预测和关闭预测的位置。

初步考虑同样使用模拟点击,通过开发者工具模拟点击测试,可以修改。

经过在程序内使用函数 find_element_by_css_selector 修改尝试并没有起到任何作用,于是又尝试了 execute_script ,延迟执行等等同思路方法,都没有奏效。

新尝试

元素模拟点击不行,可以看下网络请求是否有不同,每一次关键词检索后,再次点击输入框会发起一次请求

返回数据就是下拉框内容。

于是我比较了开启和关闭预测时的两次请求有什么不同。两次的GET参数除了常规的签名和时间戳变化,没有异同。

于是我比较了cookie,结果很喜人,的确有一个cookie值发生了变化,

ORIGIN = 2的情况就是关闭预测,设置cookie后再次运行。

完美~ 交差
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 可回收BUG 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档