从页面源获取配置文件ID

时间:2015-09-12 16:59:43

标签: javascript php excel-vba facebook-php-sdk phpexcel

我想查找用户的facebook个人资料ID。我通过广泛的谷歌搜索在php和excel中尝试了一些东西,但无法做到。

EG。 如果我转到https://www.facebook.com/zuck,在源代码中,我看到“profile_id”:4。这里4是Mark Zuckerberg的个人资料ID。同样,我需要识别少数人的个人资料ID,并且我已准备好他们的Facebook网址。做这个的最好方式是什么? PHP,Excel,Javascript或任何其他语言。

请帮我一个开始,因为我两天都在努力争取这个。

由于

编辑: 在excel中,我正在做这样的事情

Sub find()

Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    With ie
        ie.Visible = False
        ie.Navigate "http://findfacebookid.com/"
    ie.Visible = True

    Do While ie.Busy
        Application.StatusBar = "Downloading information, lease wait..."
        DoEvents
    Loop

    pro = ie.Document.getElementsByID("profile_id")
End With


End Sub

1 个答案:

答案 0 :(得分:3)

免责声明:我不知道php,也不使用Facebook Apis。这些方法很可能会为你提供更好的东西

以下是一段示例代码,可在不到2秒的时间内为您提供ID。以下是Excel-VBA中的代码,我在几个配置文件链接(包括我的)上进行了测试,但它确实有效。

Option Explicit

Sub Sample()
    Dim sURL As String
    Dim webSource As String
    Dim tmpString As String

    sURL = "https://www.facebook.com/zuck"

    With CreateObject("Microsoft.XMLHTTP")
        .Open "GET", sURL, False
        .send
        webSource = .responsetext
    End With

    tmpString = Split(webSource, "profile_id=")(1)
    tmpString = Split(tmpString, "&")(0)

    Debug.Print tmpString '<~~ Gives 4
End Sub

如果您有一个URL列表,那么您可以将其保存在记事本或excel范围内。这没关系。确保您已读取数组中的所有数据,然后将其用于循环。

来自评论的跟进

  

我尝试了两种方式,如果我保持在循环中它只适用于第一个id而在下一个id上失败。如果我不在循环中,那么如何从.Open命令打开sURL?我做的是,对于r = 1到150 sURL =范围(&#34; A&#34;&amp; r).Value和Next r在结尾。你可以编辑代码并告诉我正确的方法吗? - Sabha 27秒前

我已对代码进行了评论,但如果您仍有疑问,只需询问:)

Option Explicit

Sub Sample()
    Dim sURL As String
    Dim webSource As String, tmpString As String
    Dim i As Long, lRow As Long
    Dim ws As Worksheet

    '~~> This is the worksheet which has ids.
    Set ws = ThisWorkbook.Sheets("Sheet2")

    With ws
        '~~> Assuming that the urls are in Col A
        '~~> Find last row of col A
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        With CreateObject("Microsoft.XMLHTTP")
            For i = 1 To lRow
                sURL = ws.Range("A" & i).Value
                .Open "GET", sURL, False
                .send

                webSource = .responseText

                If InStr(1, webSource, "profile_id=") Then
                    tmpString = Split(webSource, "profile_id=")(1)
                    tmpString = Split(tmpString, ",")(0)
                ElseIf InStr(1, webSource, "profile_id"":") Then
                    tmpString = Split(webSource, "profile_id"":")(1)
                    tmpString = Split(tmpString, ",")(0)
                End If
                '~~> The ids will be written to Col B
                If tmpString <> "" Then ws.Range("B" & i).Value = tmpString
            Next i
        End With
    End With
End Sub