Аргумент ключевого слова конфликтует с переменной

Хотя это, скорее всего, вопрос новичка, я изо всех сил пытался найти какую-либо информацию в Интернете, которая помогла бы мне решить мою проблему.

Мой код предназначен для удаления луковых сайтов, и, несмотря на возможность подключения к 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
Другие вопросы по тегам