我已经使用 pytrends(一个用于检索谷歌趋势数据的包)工作很长时间了,并意识到我在浏览器上得到的结果和使用 pytrends 得到的结果有很大不同。在检查了每个人正在执行的请求之后,我能够发现的唯一区别是他们都发出的请求中的用户类型参数,以及一些细微的更改,例如,浏览器使请求指示时区两次。
Browser:
"userConfig":{"userType":"USER_TYPE_LEGIT_USER"}
Pytrends:
"userConfig": {"userType": "USER_TYPE_SCRAPER"}
Run Code Online (Sandbox Code Playgroud)
请求中的时间范围、时区和其余参数都是相同的,但在对数据进行实际请求之前必须获取令牌。我不知道为什么会发生这种情况,而且我不认为令牌与您的请求有任何关系,再次,唯一的区别是指定不同用户类型的两个请求
现在我发布两个完整的请求,每个请求但令牌:
Pytrends
https://trends.google.com/trends/api/widgetdata/multiline?req={"time": "2014-12-28 2020-01-01", "resolution": "WEEK", "locale": "es", "comparisonItem": [{"geo": {"region": "ES-CM"}, "complexKeywordsRestriction": {"keyword": [{"type": "BROAD", "value": "gripe"}]}}], "requestOptions": {"property": "", "backend": "IZG", "category": 0}, "userConfig": {"userType": "USER_TYPE_SCRAPER"}}&token=TOKEN_HERE&tz=-120
Run Code Online (Sandbox Code Playgroud)
Browser
https://trends.google.es/trends/api/widgetdata/multiline?hl=es&tz=-120&tz=-120&req={"time":"2014-12-28 2020-01-01","resolution":"WEEK","locale":"es","comparisonItem":[{"geo":{"region":"ES-CM"},"complexKeywordsRestriction":{"keyword":[{"type":"BROAD","value":"gripe"}]}}],"requestOptions":{"property":"","backend":"IZG","category":0},"userConfig":{"userType":"USER_TYPE_LEGIT_USER"}}&token=TOKEN_HERE
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会发生这种情况以及我如何设法检索它们之间的一致数据?另外,如果您抓取他们的网站而不是使用浏览器,为什么谷歌会提供不同的数据?
我正在创建一个具有以下结构的 Python 包:
\nVisionPy/\n\xe2\x94\x82 __init__.py\n\xe2\x94\x82 main.py\n\xe2\x94\x82 plugin_interface.py\n\xe2\x94\x82 README.md\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 controllers/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 imagecontroller.py\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 volumecontroller.py\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 imagemodel.py\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 volumemodel.py\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 plugins/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CScan/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 NDEToolkit.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 plugin.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 requirements.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ui/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 views/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 imageview.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 label.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mainview.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 volumeview.py\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 utils/\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 progress_window.py\n
Run Code Online (Sandbox Code Playgroud)\n我的问题是,这意味着稍后会以允许我像 CScan 一样创建插件的方式进行编译和执行。
\n截至目前,我执行应用程序的方法是python main.py
从 VisionPy 目录内部运行。我当前遇到的问题是我无法设法从plugin.py导入NDEToolkit ,尽管它们位于同一文件夹中。这是一个问题,因为我想创建一个插件接口,即使对编程不太了解的人也可以轻松访问,并且将文件夹附加到系统路径似乎不是实现它的最佳方法。