使用Facebook API的最新版本(2.12)我正在尝试使用Graph API Explorer获取页面的(公共)事件.
但是,我似乎无法让它工作:
当我将鼠标悬停在左侧的灰色"id"或"name"上时,它显示"字段为空或访问令牌不允许".
现在,我在这里使用的页面是Techcrunch,他们有很多活动即将发布.所以"空"似乎不是问题.
在"不允许"方面,我检查了API参考,并在https://developers.facebook.com/docs/graph-api/reference/page/events/上.
但是,我似乎也找不到任何问题.它说"阅读页面事件需要有效的页面访问令牌或具有基本权限的用户访问令牌."
我在这里错过了什么?任何提示都非常感谢!
我正在尝试在我通过 SSH 连接的虚拟 Ubuntu 16.04 服务器上运行 Scrapyd。当我通过简单地运行来运行scrapy
$ scrapyd
Run Code Online (Sandbox Code Playgroud)
我可以通过访问http://82.165.102.18:6800连接到 Web 界面。
但是,一旦我关闭 SSH 连接,Web 界面就不再可用,因此,我认为我需要以某种方式在后台运行 Scrapyd 作为服务。
经过一番研究,我发现了一些建议的解决方案:
有人知道最好/推荐的解决方案是什么吗?不幸的是,Scrapyd 文档相当单薄且过时。
对于某些背景,我每天需要运行大约 10-15 个蜘蛛。
截至最近,Scrapinghub 的免费包中不再包含定期作业,这是我用来运行我的 Scrapy 爬虫的工具。
\n\n因此,我决定改用Scrapyd。所以我继续建立了一个运行 Ubuntu 16.04 的虚拟服务器。(这是我第一次设置和运行服务器,所以请耐心等待)
\n\n按照scrapyd.readthedocs.io上的说明,我使用 pip 安装了 Scrapyd:
\n\n$ pip install scrapyd\nRun Code Online (Sandbox Code Playgroud)\n\n(那是在我发现 Ubuntu 的推荐方式(使用 apt-get)实际上不再受支持之后,请参阅Github)。
\n\n然后我使用 SSH 登录到我的服务器,并通过简单地运行来运行 Scrapyd
\n\n$ scrapyd\nRun Code Online (Sandbox Code Playgroud)\n\n据我所知,一切看起来都很好:
\n\n2017-10-30 17:31:19+0000 [-] Log opened.\n2017-10-30 17:31:19+0000 [-] twistd 16.0.0 (/usr/bin/python 2.7.12) starting up.\n2017-10-30 17:31:19+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.\n2017-10-30 17:31:19+0000 [-] Site starting on 6800\n2017-10-30 17:31:19+0000 [-] Starting factory <twisted.web.server.Site instance at 0x7f644752bfc8>\n2017-10-30 17:31:19+0000 [Launcher] Scrapyd 1.2.0 started: max_proc=4, runner=u\'scrapyd.runner\'\nRun Code Online (Sandbox Code Playgroud)\n\n … 如何从 Python 字典列表中编写 CSV 文件,确保字典键始终按相同顺序排列?
具体来说,我有一个 Python 字典列表(来自 JSON API),如下所示:
[
{
"id": 1,
"name": "Peter",
"city": "London"
},
{
"id": 2,
"city": "Boston",
"name": "Paul"
},
{
"id": 3,
"name": "Mary",
"city": "Paris"
}
]
Run Code Online (Sandbox Code Playgroud)
请注意,键(名称/城市)的顺序各不相同。
现在我想把它写到 MySQL 中。我目前所做的是将所有内容写入 CSV 文件,然后使用 LOAD DATA INFILE 将该文件加载到 MySQL 中。
我通过循环遍历列表中的所有元素并将值写入 CSV 文件来编写 CSV 文件:
def write_csv_file(filename, resp):
csvFile = open(filename, "w", newline='', encoding='utf-8')
csvWriter = csv.writer(csvFile, delimiter=',', quoting=csv.QUOTE_ALL)
for element in resp:
csvWriter.writerow(element.values())
csvFile.close()
Run Code Online (Sandbox Code Playgroud)
然而,这会导致 CSV 文件在行与行之间具有不同的值,具体取决于数据在字典中的位置。
如何更好地做到这一点,确保字典键始终处于相同的顺序?
任何提示都非常感谢!
我使用 DATE 函数从年、月和日期的三个变量中获取日期,如下所示:
DATE(year_var, month_var, day_var) AS date_ymd
但是,有时这会导致无效日期,例如,month_var 可能是 11,day_var 可能是 31。在这些情况下,DATE 将失败,因为 2022-11-31 不是有效日期。
相反,我需要将 NULL 作为结果。
我正在寻找类似SAFE_CAST 的东西,但用于日期。
任何提示都非常感谢!
scrapy ×2
scrapyd ×2
ubuntu ×2
csv ×1
facebook ×1
mysql ×1
python ×1
python-3.x ×1
scrapinghub ×1
sql ×1