очистка html-файла, сохраненного в локальной системе

#python-3.x #scrapy

#python-3.x #scrapy

Вопрос:

Я пытаюсь очистить HTML-файл, сохраненный в моей локальной файловой системе (ОС Windows 10).

когда я указываю путь к файлу в формате

 start_urls = ['file:///path/to/file/file_name.htm']
  

Я получаю сообщение об ошибке

ОШИБКА [scrapy.core.scraper]: ошибка загрузки <ПОЛУЧИТЬ file:///path/to/file/file_name.htm >
Ошибка FileNotFoundError: [Ошибка 2] Нет такого файла или каталога: ‘pathtofilefile_name.htm «

когда я указываю путь к файлу в формате

 start_urls = ['path/to/file/file_name.htm']
  

Я получаю сообщение об ошибке

ОШИБКА [scrapy.core.engine]: ошибка при получении запросов на запуск
вызывает ошибку ValueError(‘Отсутствует схема в URL запроса: %s’ % self._url)

Как я могу прочитать локальный HTML-файл и очистить его в ОС Windows?

Комментарии:

1. Поскольку вы говорите, что используете Windows, не должен ли ваш путь включать букву диска? например: ‘file:///C:/Users/justin/Desktop/myfile.html ‘

2.вы всегда можете использовать Python для запуска локального сервера python3 -m http.server docs.python.org/3/library/http.server.html

Ответ №1:

Я думаю, что это неправильно использовать start_urls в данном случае. Может быть, вы можете попытаться прочитать данные в файле, а затем применить Selector к нему? Проверьте этот пример:

 >>> from scrapy import Selector
>>> f = open('example.html')
>>> sel = Selector(text=f.read())
>>> sel.css('head title::text').get()
Example title
  

Если вам нужно, вы можете поместить блок с чтением файла внутри функции start_requests .

Ответ №2:

Вы можете написать код таким образом, чтобы очистить свой собственный файл, сохраненный в локальной системе

 from bs4 import BeautifulSoup
import html5lib
myFile=open('C:/Users/CSE/AppData/Local/atom/app-1.42.0/practise.html','r')
soup=BeautifulSoup(myFile,"html5lib")
print(soup.prettify())
  

Внутри функции open первым параметром является ваш file_path (хотя я привел здесь свой собственный путь), а второй параметр — это режим, который вы хотите.