使用ImportXML从goodreads.com将书名导入Google表格时,有时会出现“导入内部错误”

我有一个公式可以从goodreads.com获取书名:

=IMPORTXML("https://www.goodreads.com/book/show/" & gr_id; "//*[@id='bookTitle']")

其中gr_id是包含书籍ID的列。例如,当gr_id=23848607时,它是从URL https://www.goodreads.com/book/show/23848607获取的,结果是“ Warheart”。

该公式在一段时间前效果很好。我没有做任何更改,现在我发现它停止了某些书籍的工作(仍然为其他书籍工作)。现在,它代替书名,为N/A提供了“导入内部错误”提示。无效的ID为:

48332548
35906922

如何使其适用于所有书籍?

关于“导入内部错误”问题,发布了许多问题。我尝试了一些解决方案,包括将公式复制到一张新纸上,但是没有用。

更新:我尝试了以下不同的XPath公式,而不是"//*[@id='bookTitle']"

"//h1[@id='bookTitle']"
"//h1"

这些不同的XPath公式与原始XPath公式的工作原理相同。他们为原始ID所使用的ID正确地工作,并为N/A产生了与原始ID相同的ID。

更新:我刚刚检查了一下,所有公式对于所有gr_ids均正常工作(自从它们失效后,我没有进行任何更改。)也许有人知道如何防止它们避免将来停止工作。

更新:我再次检查了一次。在所有gr_id中,只有一个现在显示N\A35906922。我创建了example spreadsheet,因为我的工作电子表格包含太多无关的详细信息,但是该问题并未出现在示例电子表格中。我回到我的工作电子表格并重新加载它-该问题在我的工作电子表格中也消失了。然后,我在示例电子表格中添加了更多测试数据,以下新示例gr_ids显示了N\A

48213012
48213092

使用ImportXML从goodreads.com将书名导入Google表格时,有时会出现“导入内部错误”

我尝试制作示例电子表格的副本,以查看它是否可以解决问题。复制示例电子表格中的行为与原始示例电子表格中的行为相同-仅上面指定的两个gr_id才存在问题。

lihuiflora 回答:使用ImportXML从goodreads.com将书名导入Google表格时,有时会出现“导入内部错误”

如果您在这两个ID上运行完整的IMPORTXML,您会发现它根本不会返回任何内容:

=IMPORTXML("https://www.goodreads.com/book/show/48213012-fathers-and-sons","//*")

这意味着Google表格出于某种原因无法访问XML内容(可能类似于 https://stackoverflow.com/a/24891676/5632629

因此,我们可以尝试使用IMPORTDATA直接读取源代码,在那里我们可以找到大约70个具有相同信息的元素,因此我们选择其中一个元素,将其隔离并删除HTML标签。那么我们只需将先前的公式包装在IFERROR中,并在第一次失败时强制该公式进行第二次查看。结果是这样的:

=IFERROR(IMPORTXML("https://www.goodreads.com/book/show/"&A:A,"//*[@id='bookTitle']"),REGEXEXTRACT(QUERY(ARRAY_CONSTRAIN(
 IMPORTDATA("https://www.goodreads.com/book/show/"&A:A),100,1),"select Col1 where Col1 contains '</title>'"),">(.*) by"))

0

,

IMPORTXML()似乎不可靠。我决定不使用它,因为我没有找到可接受的解决方案。我没有将IMPORTXML()的书从goodreads.com导出到csv文件(有goodreads.com的{​​{3}}),然后导入了{{1} }文件添加到我的电子表格中。这不是一个完美的解决方案,因为每次需要更新书籍时我都需要重新导入,但是至少可以。

本文链接:https://www.f2er.com/3082356.html

大家都在问