Очистка заголовков и метатегов от миллионов URL - PullRequest
0 голосов
/ 17 января 2019

Я видел множество инструментов, таких как Scrapy или Selenium. По сути, вопрос не в том, как очистить веб-сайт, а в том, как очистить миллионы веб-сайтов за приемлемое время, уважая robots.txt и вежливость в Интернете.

На данный момент я собрал более миллиарда URL, но теперь мне нужно очистить каждый из них, чтобы получить "title" и "metatags".

Возможно ли это? И как? Какой инструмент позволит мне очистить несколько URL, не будучи заблокированным или заблокированным на веб-сайте?

Спасибо

1 Ответ

0 голосов
/ 17 января 2019

Так что здесь я предоставляю комплексное решение. Использование запросов и BeautifulSoup libs будет лучшим решением для вас.

Итак, во-первых, у вас есть миллиард URL-адресов в качестве списка, который я предполагаю. Ваша цель - получить контент title и meta с этих сайтов.

import requests
from bs4 import BeautifulSoup

urls = ['http://github.com', 'http://bitbucket.com', ...] # upto 1 billion urls :o
# looping through the billion URLs 
for url in urls:
    req = requests.get(url).text # making the request
    soup = BeautifulSoup(req, 'html5lib') 
    meta_content = soup.findAll('meta', content=True) # here you get your meta tag contents
    title_content = soup.findAll('title') # here you get your title tag contents
    print ("Meta for %s: %s" % (url, meta_content))
    print ("Title for %s: %s" % (url, title_content))

Примечание. html.parser неправильно анализирует теги <meta>. Он не понимает, что они самозакрывающиеся, поэтому я использовал библиотеку html5lib.

...