Я пытаюсь создать функцию, которая может очищать сайт и анализировать его содержимое, удаляя теги и сохраняя результаты в текстовом файле .txt. Функция должна передавать заголовок, чтобы избежать ошибки 403, а также вернуть весь контент страницы (я использовал Google в качестве прокси-сервера, но намерен, чтобы это был любой сайт, который потенциально может привести к ошибке 403). Вот что У меня есть, что генерирует ошибку, которая гласит: «TypeError: не удается преобразовать str в байты»
from urllib.request import urlopen
import urllib.request
import json
def GetData(url):
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
headers = { 'User-Agent' : user_agent }
response = urllib.request.Request(url, headers)
with urllib.request.urlopen(response) as res:
clean = re.sub(r'<.*?>', '', res)
data = clean.read().decode("utf-8")
return json.loads(data)
url = ("https://google.com")
#print(GetData(url))
fileName = "Data.txt"
myFile = open(fileName, 'w')
myFile.write(GetData(url))
Я был бы очень признателен, если кто-нибудь может указать мне в правильном направлении.
Вот ошибка трассировки: Traceback (последний вызов был последним): файл "JSON .py", строка 18, в печати (GetData (url)), файл "JSON .py", строка 9, в GetData с urllib.request.urlopen (ответ) в виде res: Файл "C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ urllib \ request.py", строка 222, в urlopen return opener.open (url, data, timeout) Файл "C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ urllib \ request.py", строка 525, в открытом ответе = self Файл ._open (req, data) "C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ urllib \ request.py", строка 543, в файле _open '_open', req) " C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ urllib \ request.py ", строка 503, в _call_chain result = fun c (* args) Файл" C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ urllib \ request.py ", строка 1362, в контексте https_open = self._context, check_hostname = self._check_hostname) Файл" C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ urllib \ request.py ", строка 1319, в do_open encode_chunked = req.has_header ('Transfer-encoding')) Файл" C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ http \ client.py ", строка 1252, в запросе self._send_request (метод, URL, тело, заголовки, encode_chunked) Файл" C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ http \ client.py ", строка 1298, в файле _send_request self.endheaders (body, encode_chunked = encode_chunked), файл" C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ http \ client.py ", строка 1247, в конечных заголовках self._send_output (message_body, encode_chunked = encode_chunked) Файл" C: \ Users \ andre \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ http \ client.py ", строка 1064, в _send_output + b '\ r \ n' Ошибка типа: невозможно преобразовать str в байты