快速大量收集Facebook粉丝页面的数字ID

2024-09-30 01:34:38 发布

您现在位置:Python中文网/ 问答频道 /正文

许多Facebook的粉丝页面现在采用以下格式-https://www.facebook.com/TiltedKiltEsplanade,其中“tilledkiltesplanade”是页面所有者声明的名称的一个示例。但是,同一页面的RSS提要位于https://www.facebook.com/feeds/page.php?id=414117051979234&format=rss20,其中414117051979234是一个ID,可以通过转到https://graph来确定。facebook.com/tilteskiltesplanade并查找页面上列出的最后一个数字标识(页面顶部有两个类似的ID,但可以忽略它们)。在

我有一个很长的Facebook粉丝页面列表,我想快速抓取对应于这些页面的数字id,这样我就可以将它们添加到RSS阅读器中。刮掉这些页面最简单的方法是什么?我对Scrapy很熟悉,但我不确定是否可以使用它,因为页面的图形版本没有以允许轻松刮取的方式进行标记(据我所知)

谢谢。在


Tags: httpscomid声明facebookwww格式数字
1条回答
网友
1楼 · 发布于 2024-09-30 01:34:38

graph请求的输出是一个JSON对象。这比HTML内容更容易处理。在

这将是您所要查找的内容的简单实现:

# file: myspider.py
import json

from scrapy.http import Request
from scrapy.spider import BaseSpider


class MySpider(BaseSpider):
    name = 'myspider'
    start_urls = (
        # Add here more urls. Alternatively, make the start urls dynamic
        # reading them from a file, db or an external url.
        'https://www.facebook.com/TiltedKiltEsplanade',
    )

    graph_url = 'https://graph.facebook.com/{name}'
    feed_url = 'https://www.facebook.com/feeds/page.php?id={id}&format=rss20'

    def start_requests(self):
        for url in self.start_urls:
            # This assumes there is no trailing slash
            name = url.rpartition('/')[2]
            yield Request(self.graph_url.format(name=name), self.parse_graph)

    def parse_graph(self, response):
        data = json.loads(response.body)
        return Request(self.feed_url.format(id=data['id']), self.parse_feed)

    def parse_feed(self, response):
        # You can use the xml spider, xml selector or the feedparser module
        # to extract information from the feed.
        self.log('Got feed: %s' % response.body[:100])

输出:

^{pr2}$

相关问题 更多 >

    热门问题