如何从给定的网站中提取社交信息?

时间:2017-10-05 07:30:21

标签: python web-scraping scrapy social-networking

我有一个网站网址,如www.example.com

我想从这个网站收集社交信息,如:facebook url(facebook.com/example),twitter url(twitter.com/example)等,如果有的话,可以在网站的任何页面上找到。

如何完成此任务,建议任何教程,博客,技术..

3 个答案:

答案 0 :(得分:2)

由于您不确切知道这些链接所在的确切位置(网站的哪个页面),您可能希望以CrawlSpider类为基础设置蜘蛛。这样的蜘蛛可以让您定义链接提取和网站导航的规则。看到这个最小的例子:

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class MySpider(CrawlSpider):
    name = 'example.com'
    start_urls = ['http://www.example.com']

    rules = (
        Rule(LinkExtractor(allow_domains=('example.com', )), callback='parse_page', follow=True),
    )

    def parse_page(self, response):
        item = dict()
        item['page'] = response.url
        item['facebook_urls'] = response.xpath('//a[contains(@href, "facebook.com")]/@href').extract()
        item['twitter_urls'] = response.xpath('//a[contains(@href, "twitter.com")]/@href').extract()
        yield item

此蜘蛛会抓取example.com网站的所有网页,并提取包含facebook.comtwitter.com的网址。

答案 1 :(得分:2)

import requests
from html_to_etree import parse_html_bytes
from extract_social_media import find_links_tree

res = requests.get('http://www.jpmorganchase.com')
tree = parse_html_bytes(res.content, res.headers.get('content-type'))

set(find_links_tree(tree))

来源:https://github.com/fluquid/extract-social-media

答案 2 :(得分:0)

很可能你想要 1.在html页面布局的页眉/页脚中搜索链接。因为那是他们最常见的地方。 2.您可以与同一站点的其他页面上找到的链接进行交叉引用。 3.您可以检查站点/组织的名称是否在链接中。但是这个不可靠,因为名称可能会有所不同或使用绝对奇怪的句柄。

这就是我能想到的全部。

相关问题