Я хотел бы очистить только название веб-страницы, используя Python. Мне нужно сделать это для тысяч сайтов, чтобы это было быстро. Я видел предыдущие вопросы, такие как получение только заголовка веб-страницы в python, но все те, которые я нашел, загружают всю страницу, прежде чем получить заголовок, который кажется очень неэффективным, поскольку чаще всего заголовок содержится в первых нескольких строках HTML.
Можно ли загружать только части веб-страницы до тех пор, пока название не будет найдено?
Я пробовал следующее, но page.readline()
загружает всю страницу.
import urllib2
print("Looking up {}".format(link))
hdr = {'User-Agent': 'Mozilla/5.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding': 'none',
'Accept-Language': 'en-US,en;q=0.8',
'Connection': 'keep-alive'}
req = urllib2.Request(link, headers=hdr)
page = urllib2.urlopen(req, timeout=10)
content = ''
while '</title>' not in content:
content = content + page.readline()
- Изменить -
Обратите внимание, что мое текущее решение использует BeautifulSoup, ограниченное только обработкой заголовка, поэтому единственное место, которое я могу оптимизировать, скорее всего, не будет читаться на всей странице.
title_selector = SoupStrainer('title')
soup = BeautifulSoup(page, "lxml", parse_only=title_selector)
title = soup.title.string.strip()
- Изменить 2 -
Я обнаружил, что сам BeautifulSoup разбивает содержимое на несколько строк в self.current_data переменная (см. эту функцию в bs4), но я не уверен, как изменить код, чтобы в основном остановить чтение всего оставшегося содержимого после того, как заголовок был найденный. Одна из проблем может заключаться в том, что перенаправления должны по-прежнему работать.
- Редактировать 3 -
Итак, вот пример. У меня есть ссылка www.xyz.com/abc, и я должен следовать этому через любые переадресации (почти все мои ссылки используют bit.ly вид сокращения ссылок). Меня интересуют как заголовок, так и домен, который возникает после любых перенаправлений.
- Изменить 4 -
Большое спасибо за вашу помощь! Ответ Кул-Тигина очень хорошо работает и был принят. Я сохраню щедрость, пока она не закончится, хотя для того, чтобы увидеть, появляется ли лучший ответ (как показано, например, сравнением измерения времени).
- Изменить 5 -
Для всех, кого это интересует: я решил, что принятый ответ будет примерно вдвое быстрее моего существующего решения с помощью BeautifulSoup4.