Python抓取Google Trends(谷歌指数)
时间:2022-06-18
本文章向大家介绍Python抓取Google Trends(谷歌指数),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Pyppeteer暴力抓取Google trends:
import re
import time
import asyncio
from lxml import etree
from pyppeteer import launch
async def main():
# headless参数设为False,则变成有头模式
browser = await launch(
# headless=False
)
page = await browser.newPage()
await page.setViewport(viewport={'width':1280, 'height':800})
await page.setJavaScriptEnabled(enabled=True)
await page.goto('https://trends.google.com/trends/?geo=US')
await page.type(selector='input#input-254', text='bitcoin')
await asyncio.sleep(1) # 等待网页加载出来,懒得用条件判断了
await page.keyboard.press('Enter')
await asyncio.sleep(2)
# print(await page.title())
await page.goto('https://trends.google.com/trends/explore?date=now%207-d&q=bitcoin')
await asyncio.sleep(2)
content_text = await page.content()
# print(content_text)
res = re.findall(r'<table>.*</table>?', content_text, flags=0)[0]
# print(res)
tree = etree.HTML(res)
values = tree.xpath('//table/tbody/tr')
for item in values:
timeformat = item.xpath('./td[1]/text()')[0].replace('u202a','').replace('u202c','')
# print(timeformat)
timeArray = time.strptime(str(time.localtime().tm_year) + ' ' + timeformat, "%Y %b %d at %H:%M %p")
timestamp = int(time.mktime(timeArray))
print(timestamp) # 时间戳
score = item.xpath('./td[2]/text()')[0]
print(score) # 分数
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
获得的是每相隔一小时的结果:
1551060000
68
1551063600
67
1551067200
66
1551027600
73
1551031200
72
1551034800
72
1551038400
68
GitHub上的pytrends项目(https://github.com/GeneralMills/pytrends)也可以用来抓取,但是获取分数的请求url年久失修,不能获取到数据,其它比如获取相关词是好的。
- [C#1] 10-事件
- Windows 7的VPC虚拟机自动不与主机时间同步的解决办法
- [C#1] 9-委托
- jquery基本选择器
- rainyday.js——超逼真全屏雨滴模拟插件
- [C#1] 8-数组
- ASP.NET MVC2 数据模型验证类库:MVC Foolproof Validation
- [C#1] 7-枚举
- 在链接前面自动添加favicon 图标(jquery)
- zepto 基础知识(4)
- Intro.js:网站功能操作分布引导插件(附中文独家使用教程)
- [C#1] 6-方法
- 如何删除WordPress 的“多站点”模式(multisite)?
- 部分Sonos及Bose扬声器爆安全漏洞,被黑客入侵后发出特定音频
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Salesforce LWC学习(二十七) File Upload
- 让我们来谈谈python中的prettyprint和pprint
- vue 开发规范
- Markdown 编写规范
- JavaScript编码规范
- HTML编码规范
- postgres数据库不能用ip地址访问的问题
- Flutter基础widgets教程-ButtonBar篇
- 如何在linux服务上创建samba文件共享服务
- Salesforce Javascript(二) 箭头函数
- java面试基础部分;
- 7-2.表单-HTML基础
- 如何在github上传多个项目
- Flutter基础widgets教程-Card篇
- Springboot热部署,使用spring-boot-devtools、springloaded两种方式进行热部署