Я очищаю веб-сайт, используя комбинацию python, селена и TOR.
Очистка работает нормально, но со временем она становится значительно медленнее, изначально очищает до 30 страниц в минуту, и затем, медленно, но неуклонно, уменьшаясь до 4-5 страниц в минуту в течение пары минут.
В настоящее время я не занимаюсь анализом содержимого сети страниц . Я сделаю это на более позднем этапе, так что это выходит за рамки этого вопроса.
Вот мой код:
import requests
from stem import Signal
from stem.control import Controller
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def get_tor_session():
session = requests.Session()
# Tor uses the 9050 port as the default socks port
session.proxies = {'http': 'socks5://127.0.0.1:9050',
'https': 'socks5://127.0.0.1:9050'}
#session.headers = {'User-Agent': 'Mozilla/5.0'}
session.headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux i686; G518Rco3Yp0uLV40Lcc9hAzC1BOROTJADjicLjOmlr4=) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3','Accept-Encoding': 'gzip, deflate, sdch','Accept-Language': 'en-US,en;q=0.8','Connection': 'keep-alive'}
return session
# signal TOR for a new connection
def renew_connection():
with Controller.from_port(port = 9051) as controller:
controller.authenticate(password="16:8F6BA4CFC409D432607A853D139F3FFE43A1B77E4893BEA3CE7F63DA27")
controller.signal(Signal.NEWNYM)
chrome_options = Options()
chrome_options.add_argument("--proxy-server=socks5://127.0.0.1:9050")
url = "https://www.targesite.com/"
driver = webdriver.Chrome(options=chrome_options)
for i in range(1,1000000,1):
renew_connection()
session = get_tor_session()
finalUrl = url + str(i) + "/"
driver.get(finalUrl)
f=open("C:\\outputs\\" + str(i) +".txt", "a+", encoding="utf-8")
f.write(driver.page_source)
f.close()
У меня не так уж много опыта работы со скребком в python, и я довольно ржавый в моем python в целом - поэтому я не уверен, что вызывает эти замедления. Мой вопрос:
Что я могу сделать, чтобы избежать этих замедлений? С помощью «правильного» кода я смогу поддерживать высокий начальный уровень очистки 30 страниц в минуту, или нет?