Аргумент ключевого слова конфликтует с переменной
Хотя это, скорее всего, вопрос новичка, я изо всех сил пытался найти какую-либо информацию в Интернете, которая помогла бы мне решить мою проблему.
Мой код предназначен для удаления луковых сайтов, и, несмотря на возможность подключения к TOR и веб-скрапер, работающий нормально как автономный, когда я пытался объединить оба блока кода, я продолжал получать многочисленные ошибки, касающиеся аргумента ключевого слова в моем коде, даже попытка удалить его вызывает у меня ошибки, я немного не понимаю, что я должен делать
import socket
import socks
import requests
from pywebcopy import save_webpage
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
def get_tor_session():
session = requests.session()
# Tor uses the 9050 port as the default socks port
session.proxies = {'http': 'socks5h://127.0.0.1:9050',
'https': 'socks5h://127.0.0.1:9050'}
return session
session = get_tor_session()
print(session.get("http://httpbin.org/ip").text)
kwargs = {'project_name': 'site folder'}
save_webpage(
# url of the website
session.get(url="http://elfqv3zjfegus3bgg5d7pv62eqght4h6sl6yjjhe7kjpi2s56bzgk2yd.onion"),
# folder where the copy will be saved
project_folder=r"C:\Users\admin\Desktop\WebScraping",
**kwargs
)
В этом случае мне представлена следующая ошибка:
TypeError: нельзя смешивать аргументы str и non-str
попытка заменить
project_folder=r"C:\Users\admin\Desktop\WebScraping",
**kwargs
с участием
kwargs,
project_folder=r"C:\Users\admin\Desktop\WebScraping"
представляет мне эту ошибку:
TypeError: save_webpage() получил несколько значений для аргумента
трассировка для первой ошибки:
File "C:\Users\admin\Desktop\WebScraping\tor.py", line 43, in <module>
**kwargs
File "C:\Users\admin\anaconda3\lib\site-packages\pywebcopy\api.py", line 58, in save_webpage
config.setup_config(url, project_folder, project_name, **kwargs)
File "C:\Users\admin\anaconda3\lib\site-packages\pywebcopy\configs.py", line 189, in setup_config
SESSION.load_rules_from_url(urljoin(project_url, '/robots.txt'))
File "C:\Users\admin\anaconda3\lib\urllib\parse.py", line 487, in urljoin
base, url, _coerce_result = _coerce_args(base, url)
File "C:\Users\admin\anaconda3\lib\urllib\parse.py", line 120, in _coerce_args
raise TypeError("Cannot mix str and non-str arguments")
Я был бы очень признателен за объяснение того, что вызывает такую ошибку и как ее избежать в будущем.
2 ответа
Не уверен, почему на это еще не ответили. Как упоминалось в моем комментарии, просто измените это:
save_webpage(
# url of the website
session.get(url=...),
# folder where the copy will be saved
project_folder=r"C:\Users\admin\Desktop\WebScraping",
**kwargs
)
К:
save_webpage(
# url of the website
url=...,
# folder where the copy will be saved
project_folder=r"C:\Users\admin\Desktop\WebScraping",
**kwargs
)
save_webpage
делает внутренний запрос.
РЕШЕНО
добавление следующего кода решило проблему:
def getaddrinfo(*args):
return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
socket.getaddrinfo = getaddrinfo