html 使用Google Sheet提取div中的文本[重复]

bkhjykvo  于 2023-01-03  发布在  Go
关注(0)|答案(3)|浏览(154)
    • 此问题在此处已有答案**:

Scraping data to Google Sheets from a website that uses JavaScript(2个答案)
4天前关闭。
我正在尝试从BostonGlobe网站https://www.bostonglobe.com/search/?p1=BGSearch_Overlay&q=problem中提取标题,标题嵌入在div中,我使用Google Sheets函数importxml来抓取标题,代码为

=IMPORTXML("https://www.bostonglobe.com/search/?p1=BGSearch_Overlay&q=problem","//div[@class= 'queryly_item_title')]")

但是,结果显示导入的XML内容无法解析。有人知道发生了什么吗?我应该如何修改我的代码?

sczxawaw

sczxawaw1#

Google工作表导入公式不支持javaScript内容,将被废弃:

fivyi3re

fivyi3re2#

  • Boston地球仪 * 站点的内容(包括所有标题和文章)是使用动态脚本而不是静态HTML生成的。因此,您将无法使用IMPORTXML进行提取。
vaj7vani

vaj7vani3#

我可以提供一个变通方案。
进入实际的网页,按Ctrl-A选择整个网页内容。按Ctrl-C复制到剪贴板。然后进入谷歌表格,点击任何空白表格的A1,按Ctrl-V复制所有网页内容。它会运行到A列。
现在,在另一个空列的某个单元格中(比如现在是C2),放入以下公式:
第一个月
这样就可以从A栏的内容中提取标题。
FILTER使用REGEXMATCH来提取任何带有“By”行的内容。
JOIN部分形成了所有三字母月份名称的REGEX“OR列表”。(年份不重要;它必须是“something”,这样DATE才能从中提取月份名称,最里面的REGEXREPLACE将用波浪号(~)替换那些三个字母的月份名称,作为要删除的内容的标记。
最外层的REGEXREPLACE将删除从那里到那些字符串末尾的内容,只留下头。
没有其他网页的保证,但这个过程和公式(S)应在所有类似的标题列表页从这个网站。
如果你还需要保持超链接的活跃状态,那就有点麻烦了,你必须分两栏来完成:
在上例中,我们将第一个公式放置在C2中。在D2中,您可以放置以下公式(取自第一个公式):
=ArrayFormula(FILTER(A:A,REGEXMATCH(A:A,"\/ By")))
这会将整个标题、副标题和开头细节提取为一个长字符串,但会保留超链接。只需将D列宽度更改为50这样窄的值,然后选择整个D列并应用格式〉换行〉剪辑来截断溢出。
如果你想打破对网页的依赖“数据下降”在A栏,这样你就可以删除所有:
1.)选择整个公式列,然后按Ctrl-C复制到剪贴板。
2.)打开一个新的Word文档(或者GoogleDocs,但是如果你有Word的话,我建议你使用它,因为它不在Google帝国的范围内,而且会完全分离出更多的方面),按Ctrl-V粘贴公式结果。
3.)然后按Ctrl-A选择您刚刚放入Word文档的内容,按Ctrl-C将其复制回剪贴板,然后返回Google Sheets [公式列仍处于选中状态]并按Ctrl-V。
4.)如果需要,您需要应用格式〉环绕〉剪辑来截断要剪辑的溢出。
然后可以删除Col-A数据。
这看起来似乎有很多事情要做。但是老实说,实际上,从开始到结束应该只需要不到一分钟的时间。

相关问题