Позвольте мне попытаться ответить на ваш вопрос по частям:
Вы правильно добавили "Заголовки браузера".Многие серверы могут напрямую разорвать ваше соединение, поскольку это явный признак того, что бот сканируется.
mechanize
, как указано в docs ",инструмент для программного просмотра веб-страниц ".
Это означает, что он в основном используется для сканирования веб-страниц, анализа их содержимого, заполнения форм, щелчка мышью по вещам, отправки запросов, но без использования" настоящего "веб-браузера с частямитакие как рендеринг CSS.Например, вы не можете открыть страницу и сделать снимок экрана, так как там нет чего-то «отрендеренного», и для этого вам нужно сохранить страницу и отобразить ее, используя другое решение.
Если вам это подходит, проверьте безголовые браузеры в качестве технологии, их много .В экосистеме Python, кроме mechanize
, я бы проверил "хром без головы" , так как "phantomjs" , к сожалению, больше не поддерживается.
Но если я правильно понимаю, вам нужен реальный веб-браузер, чтобы открыть веб-страницу, верно?По этой причине вам действительно нужен браузер в вашей системе, чтобы позаботиться об этом!
Случай 1: Используйте браузер вашей родной системы
Узнайте, где исполняемый файл вашего браузера лежит в вашемсистема.Например, мой исполняемый файл Firefox находится в "C:\Program Files\Mozilla Firefox\firefox.exe"
и , добавьте его в PATH .
. Когда вы используете Windows, используйте меню «Пуск», чтобы перейти к Advanced System Settings --> Advanced --> Environment Variables
, и добавьтепуть выше к вашей переменной PATH
.
Если вы используете Linux, export PATH=$PATH:"/path/to/your/browser"
позаботится обо всем.
Тогда ваш код может работать так же просто, как
import subprocess
import sys
listOfSites = sys.argv[1:]
links = ""
for i in listOfSites:
links += "-new-tab " + i
print(links)
subprocess.run(["firefox", links])
Firefox откроет новые окна, по одному на каждую из предоставленных вами ссылок.
Пример 2. Использование селена
Затем наступает Селен , который, на мой взгляд, является наиболее зрелым решением проблем, связанных с браузером, и тем, что использует большинство людей.Я использовал его в производственных условиях с очень хорошими результатами.Он предоставляет как пользовательский интерфейс / интерфейс браузера, который отображает веб-страницы, так и позволяет программно работать с этими веб-страницами.
Требуется некоторая настройка (например, если вы используете Firefox, выВам нужно будет загрузить исполняемый файл geckodriver
со страницы релизов , а затем снова добавить его в переменную PATH
.
Затем вы определяете свой веб-драйвер, порождаете по одному для каждого из сайтов.вам нужно посетить и get
веб-страницу. Вы также можете сделать снимок экрана в качестве доказательства правильности отображения страницы.
from selenium import webdriver
import sys
listOfSites = sys.argv[1:]
for i in listOfSites:
driver = webdriver.Firefox()
driver.get('http://'+i)
driver.save_screenshot(i+'-screenshot.png')
# When you're finished
# driver.quit()
Я протестировал оба этих фрагмента кода, и ониработать как положено. Пожалуйста, дайте мне знать, как все это звучит, и если вам нужна дополнительная информация ..! ^^