【发布时间】:2016-05-06 10:05:34
【问题描述】:
我一直在尝试从 Facebook 业务信息页面中抓取电子邮件地址,例如: Facebook Business Page Example
但是在正确确定 XPath 以执行此操作时遇到了一些问题。后来我了解到,Facebook 的业务信息页面没有一致的 xpath。 XPath 因企业而异,这意味着我目前使用 XPath 的想法行不通。
经过一些 html 检查后,我确实在 facebook 业务信息页面上了解到,如果页面上存在电子邮件,它将是 div 中唯一具有“@”符号的内容。所以我的下一个想法是,“如果我可以确定 html 中是否存在 @ 符号怎么办?如果是,也许我可以从中提取内容”。所以这就是我现在的立场。我试图首先通过“@”符号确定页面上是否存在电子邮件,如果存在,我想抓取使用“@”符号的内容。
我研究了以下方法:
email = driver.getPageSource().contains("@")
为了返回一个关于页面上是否存在@符号但它不起作用的布尔值。
【问题讨论】:
-
为什么不直接使用 Facebook 的 GraphQL 呢?它包括an
emailsfield for Pages。 -
我应该从一开始就这样做,但现在我已经开发了大部分其他功能,我觉得我还不如完成我开始的工作
-
Facebook TOS 明确禁止抓取;被抓到时,他们会很乐意为您完成访问。
-
我知道,它只会在有限的时间内。
-
可惜。您只需发送至register for an access token,然后使用 GET 发送至
http://graph.facebook.com/v2.5/<page_id>?fields=emails即可将您的电子邮件列在一个页面上,或者使用http://graph.facebook.com/v2.5/?ids=<page1_id>,<page2_id>,<page_3_id>&fields=emails一次获得多个页面的相同信息。这如此简单。
标签: python facebook selenium xpath web-scraping