我有一个网站网址,如www.example.com
我想从这个网站收集社交信息,如:facebook url(facebook.com/example),twitter url(twitter.com/example)等,如果有的话,可以在网站的任何页面上找到。
如何完成此任务,建议任何教程,博客,技术..
答案 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.com
和twitter.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))
答案 2 :(得分:0)
很可能你想要 1.在html页面布局的页眉/页脚中搜索链接。因为那是他们最常见的地方。 2.您可以与同一站点的其他页面上找到的链接进行交叉引用。 3.您可以检查站点/组织的名称是否在链接中。但是这个不可靠,因为名称可能会有所不同或使用绝对奇怪的句柄。
这就是我能想到的全部。