Написал небольшой скрипт который парсит похожие сайты с SimilarWeb:
Запускаем скрипт, пишем домен, с которого хотим собрать похожие сайты
Скрипт запускает браузер, открывает симиларвеб и парсит домены:
Далее скрипт каждый спаршенный домен автоматически подставляет в симиларвеб и парсит похожие по нему. То есть парсинг длится бесконечно, но рано или поздно изначальная тематика уйдёт, поэтому рекомендую следить время от времени за процессом парсинга. Спаршенные домены сохраняются в текстовый файл results.txt, который создается в папке (папка так же создается при каждом запуске скрипта).
Для работы скрипт использует драйвер chrome, то есть на вашем компьютере должен быть установлен какой-нибудь браузеров на хром-движке. Это всё сделано для того чтобы имитировать действия реального человека и обходить защиту от парсинга.
Сам скрипт:
Если кому-то как-то надо дополнить - пишите. Так же могу написать простенькие скрипты, не только для парсинга. Обращайтесь.
Запускаем скрипт, пишем домен, с которого хотим собрать похожие сайты
Ссылка скрыта от гостей
Скрипт запускает браузер, открывает симиларвеб и парсит домены:
Ссылка скрыта от гостей
Далее скрипт каждый спаршенный домен автоматически подставляет в симиларвеб и парсит похожие по нему. То есть парсинг длится бесконечно, но рано или поздно изначальная тематика уйдёт, поэтому рекомендую следить время от времени за процессом парсинга. Спаршенные домены сохраняются в текстовый файл results.txt, который создается в папке (папка так же создается при каждом запуске скрипта).
Для работы скрипт использует драйвер chrome, то есть на вашем компьютере должен быть установлен какой-нибудь браузеров на хром-движке. Это всё сделано для того чтобы имитировать действия реального человека и обходить защиту от парсинга.
Сам скрипт:
Python:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup
import os
from datetime import datetime
import time
def create_output_folder():
folder_name = datetime.now().strftime("%Y_%m_%d-%H_%M_%S")
os.makedirs(folder_name, exist_ok=True)
return folder_name
def write_to_file(folder, filename, data):
with open(os.path.join(folder, filename), 'a') as f:
f.write(data + "\n")
def process_domain(domain, chrome_options):
driver = webdriver.Chrome(options=chrome_options)
driver.set_page_load_timeout(30)
try:
driver.get(f'https://www.similarweb.com/website/{domain}/')
time.sleep(10)
soup = BeautifulSoup(driver.page_source, 'html.parser')
div = soup.find('div', {'class': 'wa-competitors__list'})
domains = []
if div is not None:
for span in div.findAll('span', {'class': 'wa-competitors__list-item-title'}):
domains.append(span.text.strip())
print(f"Данные домена {domain} успешно обработаны.")
return domains
except Exception as e:
print(f"Ошибка обработки домена {domain}: {e}")
finally:
driver.quit()
return []
def main():
output_folder = create_output_folder()
chrome_options = Options()
processed_domains = set()
initial_domain = input("Введите домен для обработки: ")
domains_to_process = [initial_domain]
while domains_to_process:
domain = domains_to_process.pop()
if domain not in processed_domains:
processed_domains.add(domain)
for new_domain in process_domain(domain, chrome_options):
write_to_file(output_folder, "results.txt", new_domain)
domains_to_process.append(new_domain)
print("Все данные были успешно сохранены.")
if __name__ == "__main__":
main()