@ilyakmet

Возможно ли с помощью Python вытащить все внешние ссылки из сайта?

Какими инструментами в Python можно быстро вытащить все внешние ссылки со всех страниц?
  • Вопрос задан
  • 727 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rou1997
@Rou1997
Если именно все и с любого сайта, то нужен встраиваемый браузер, то есть Selenium или Phantom.js, потому что на дворе 2016 год, и JavaScript все-таки уже существует, а еще есть Flash, который все-таки еще существует, и с ним еще сложнее все.
Ну а если достаточно простых <a href>, причем только тех которые не загружаются AJAX'ом, то можно с помощью RoboBrowser (BeautifulSoup) и т.п, то есть библиотек, которые только с DOM (HTML) работают.
Ответ написан
Комментировать
lxsmkv
@lxsmkv
Test automation engineer
lxml позволяет парсить вебстраницы. вот скрипт который открывает страницы хабра и выписывает все заголовки статей вместе со ссылками
# -*- coding: utf-8 -*-
import urllib2
import sys
from  lxml import html
import codecs
codecs.register(lambda name: codecs.lookup('utf-8') if name == 'cp65001' else None)
cnt = 1
for x in range(1,100):
	url = ("http://habrahabr.ru/interesting/page%s/" % x)

	try:
		print "=== page "+str(x)+" ==="
		tree = html.fromstring(str(urllib2.urlopen(url).read()))
		topicLink =tree.xpath("//a[@class='post__title_link']/@href")
		topicTitle = tree.xpath("//a[@class='post__title_link']/text()")
		for i in range(0, len(topicTitle)):
			var = str(cnt)+" "+topicTitle[i]+" "+topicLink[i]
			print var
			print 
			cnt=cnt+1
	except IndexError:
		print("Page "+str(x)+" does not exist!")
	except urllib2.URLError:
		print("Could not retrieve the page..")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы