【发布时间】:2017-11-25 18:28:39
【问题描述】:
我有一个项目,我正在尝试将其组合在一起进行数据分析实验。我有一个管道,但我不完全知道如何继续获取我需要的数据。 我想爬取一个网站并找到所有内部和外部链接,将它们分开并递归地爬取外部链接,直到达到一定深度。我想这样做来创建一个网站所有连接的图表,然后使用中心性算法找到中心节点并从那里继续。 理想情况下,我想在这个项目中使用 python 2。 我查看了 scrapy、beautiful soup 和其他库,但都非常混乱。
任何关于抓取和创建图表的帮助和/或建议将不胜感激
谢谢
编辑:
我正在尝试实施您建议的解决方案,使用下面的代码,我可以在调试信息中看到它正在查找链接,但它们没有保存在 LinkList 类中,或者我提取错误他们正在被过滤。
有什么建议吗?
class LinkList(Item):
url = Field()
class WebcrawlerSpider(CrawlSpider):
name = 'webcrawler'
allowed_domains = ['https://www.wehiweb.com']
start_urls = ['https://www.wehiweb.com']
rules = (
Rule(LxmlLinkExtractor(allow=()), callback='parse_obj', follow=True),
)
def parse_obj(self,response):
item = LinkList()
item['url'] = []
for link in LxmlLinkExtractor(allow=(),deny = self.allowed_domains).extract_links(response):
item['url'].append(link.url)
yield item
def main():
links = LinkList()
process = CrawlerProcess()
process.crawl(WebcrawlerSpider)
process.start()
print(links.items())
if __name__ == "__main__":
main()
【问题讨论】:
标签: python beautifulsoup scrapy web-crawler scrapy-spider