Oserror error reading file failed to load external entity

Below I've copied my python instance. I'm trying to parse medline data. I've done this with your pubmed and medline parser on the listed machine as well as on a ubuntu server with the s...

Below I’ve copied my python instance. I’m trying to parse medline data. I’ve done this with your pubmed and medline parser on the listed machine as well as on a ubuntu server with the same error. I’ve also generated a file using the R programming language. If you are familiar with that, the package I used is called easyPubMed. I used the batch_pubmed_download() function.

Anyways I’d really like to use your code, especially as it links the authors with their affiliated institutions.
I’m new to XML parsing so I have no idea what I’m doing in that respect.

Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32

>>>import pubmed_parser as pp
>>>pp.parse_pubmed_xml('C:\Users\Work\Downloads\medline16n0902.xml')

Error: it was not able to read a path, a file-like object, or a string as an XML
Traceback (most recent call last):
  File "C:Program FilesPython36libsite-packagespubmed_parser-0.1-py3.6.eggpubmed_parserutils.py", line 14, in read_xml
    tree = etree.parse(path)
  File "srclxmllxml.etree.pyx", line 3427, in lxml.etree.parse (srclxmllxml.etree.c:81101)
  File "srclxmlparser.pxi", line 1811, in lxml.etree._parseDocument (srclxmllxml.etree.c:117832)
  File "srclxmlparser.pxi", line 1837, in lxml.etree._parseDocumentFromURL (srclxmllxml.etree.c:118179)
  File "srclxmlparser.pxi", line 1741, in lxml.etree._parseDocFromFile (srclxmllxml.etree.c:117091)
  File "srclxmlparser.pxi", line 1138, in lxml.etree._BaseParser._parseDocFromFile (srclxmllxml.etree.c:111637)
  File "srclxmlparser.pxi", line 595, in lxml.etree._ParserContext._handleParseResultDoc (srclxmllxml.etree.c:105093)
  File "srclxmlparser.pxi", line 706, in lxml.etree._handleParseResult (srclxmllxml.etree.c:106801)
  File "srclxmlparser.pxi", line 633, in lxml.etree._raiseParseError (srclxmllxml.etree.c:105612)
OSError: Error reading file 'medline16n0902.xml': failed to load external entity "medline16n0902.xml"
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:Program FilesPython36libsite-packagespubmed_parser-0.1-py3.6.eggpubmed_parsermedline_parser.py", line 354, in parse_medline_xml
    tree = read_xml(path)
  File "C:Program FilesPython36libsite-packagespubmed_parser-0.1-py3.6.eggpubmed_parserutils.py", line 17, in read_xml
    tree = etree.fromstring(path)
  File "srclxmllxml.etree.pyx", line 3213, in lxml.etree.fromstring (srclxmllxml.etree.c:78994)
  File "srclxmlparser.pxi", line 1848, in lxml.etree._parseMemoryDocument (srclxmllxml.etree.c:118325)
  File "srclxmlparser.pxi", line 1729, in lxml.etree._parseDoc (srclxmllxml.etree.c:116883)
  File "srclxmlparser.pxi", line 1063, in lxml.etree._BaseParser._parseUnicodeDoc (srclxmllxml.etree.c:110870)
  File "srclxmlparser.pxi", line 595, in lxml.etree._ParserContext._handleParseResultDoc (srclxmllxml.etree.c:105093)
  File "srclxmlparser.pxi", line 706, in lxml.etree._handleParseResult (srclxmllxml.etree.c:106801)
  File "srclxmlparser.pxi", line 635, in lxml.etree._raiseParseError (srclxmllxml.etree.c:105655)
  File "<string>", line 1
lxml.etree.XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1

Я запускал этот файл на прошлой неделе, и он работал отлично, но вдруг сегодня он не работает, я ничего не менял в нем. Вы можете мне помочь, пожалуйста?

Это мой код на Python:

from lxml import etree
import numpy as np

#Parsing the xml file and creating lists
tree = etree.parse("AnyConv.com__CCSOPM Section 1_Master (1).xml")
root = tree.getroot()
Lista = []
tags = []

#Get the unique tags values
for element in root.iter():
    Lista.append(element.tag)
tags = np.unique(Lista)

#Show the unique tag[attributes] pairs
for tag in tags:
    print(tag,root.xpath(f'//{tag}')[0].attrib.keys())
    
#Changes the tag name to the comply365's tag's name
for p in tree.findall(".//sect1"):
    p.tag = ("section")
for p in tree.findall(".//sect1"):
    p.tag = ("section")
for p in tree.findall(".//informaltable"):
    p.tag = ("table")    
    
#Modify the tag's attributes to its desired form
for cy in root.xpath('//section'):
    cy.attrib['xmlns']='http://www.w3.org/2001/XMLSchema-instance'
    cy.attrib['id']='123'
    cy.attrib['type']='policy'
    cy.attrib['xsi']='urn:fontoxml:cpa.xsd:1.0'


for t in root.xpath('//title'):
    t.attrib['id']='123456789'
    
for p in root.xpath('//para'):
    p.attrib['id']='987654321'
    
for p in root.xpath('//table'):
    p.attrib['id']='11111'
    
for ct in root.xpath('//concept'):
    ct.attrib.pop("id", None)

#Print the new xml to make sure it worked:
#print(etree.tostring(root).decode())

    
tree.write("Resultado de tags XML-COMPLY365.xml")

Теперь это вызывает:

OSError: Error reading file 'AnyConv.com__CCSOPM Section 1_Master (1).xml': failed to load external entity "AnyConv.com__CCSOPM Section 1_Master (1).xml"

Если у вас есть идеи, как это исправить, не стесняйтесь оставлять комментарии.

1 ответ

Лучший ответ

Часть (1) в имени файла предполагает, что у вас уже есть AnyConv.com__CCSOPM Section 1_Master .xml на вашем компьютере, а вы попытался скопировать файл с таким именем на ваш компьютер еще раз.

Также обратите внимание, что имя вашего файла содержит пробел перед (1), и это странный. Это, в свою очередь, предполагает, что имя вашего «первого» файла (без (1)) заканчивается пробелом (и это очень странно).

Убедитесь, что ваш файл действительно существует. Или, возможно, измените его название на AnyConv.com__CCSOPM Section 1_Master.xml, то есть:

  • без конечного пробела,
  • без (1) в конце. Затем измените имя файла в своем коде соответствующим образом.

Также обратите внимание, что имя вашего файла содержит двойное подчеркивание, и это тоже странная практика. Убедитесь, что это подчеркивание в имени файла на самом деле двойное.

Хранение на вашем компьютере множества файлов с одинаковыми именами (с числовым суффикс «в названии») также является плохой практикой. Еще худшая практика — ссылаться на такие «дублированные» файлы в вашем коде. Измените имя файла на одно без такого «числового суффикса» (в этом case (1)) и задайте такое же имя файла в коде.

Еще один совет: какое бы имя у вашего файла:

  • щелкните по нему (один раз) в окне Проводник ,
  • нажмите клавишу F2, вы открываете редакцию этого файла, но пока отмеченный текст не включает расширение имени файла (в данном случае «.xml»),
  • нажмите Ctrl-A, чтобы расширить текстовую пометку до всего имени (с расширением).
  • нажмите Ctrl-C, чтобы скопировать имя файла в буфер обмена,
  • нажмите Esc, чтобы закрыть редактирование имени файла,
  • откройте редактор кода, поместите курсор туда, где находится ваше имя файла, и отметьте все имя файла,
  • нажмите Ctrl-V, чтобы заменить его содержимым буфера обмена.

Теперь в вашем коде будет фактическое имя файла.

Также убедитесь, что каталог, содержащий этот файл, находится в списке каталогов, просканированных Python при попытке открыть файл.


1

Valdi_Bo
2 Авг 2021 в 06:44

Hello, so I’m having two or three errors, at the moment I’m trying to request something from it. The code I’m having is

2020-06-30 22:10:23,230: Exception on /comparar [POST]
Traceback (most recent call last):
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/pandas/io/html.py", line 718, in _build_doc
    r = parse(self.io, parser=parser)
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/lxml/html/__init__.py", line 939, in parse
    return etree.parse(filename_or_url, parser, base_url=base_url, **kw)
  File "src/lxml/etree.pyx", line 3521, in lxml.etree.parse
  File "src/lxml/parser.pxi", line 1839, in lxml.etree._parseDocument
  File "src/lxml/parser.pxi", line 1865, in lxml.etree._parseDocumentFromURL
  File "src/lxml/parser.pxi", line 1769, in lxml.etree._parseDocFromFile
  File "src/lxml/parser.pxi", line 1163, in lxml.etree._BaseParser._parseDocFromFile
  File "src/lxml/parser.pxi", line 601, in lxml.etree._ParserContext._handleParseResultDoc
  File "src/lxml/parser.pxi", line 711, in lxml.etree._handleParseResult
  File "src/lxml/parser.pxi", line 638, in lxml.etree._raiseParseError
OSError: Error reading file '': failed to load external entity ""
**NO MATCH**
During handling of the above exception, another exception occurred:
**NO MATCH**
Traceback (most recent call last):
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/Franconline/version1/app_web.py", line 20, in comparar
    main.hacerTablas('primeraTabla.csv',plan1)
  File "/home/Franconline/version1/prueba.py", line 66, in hacerTablas
    hacerArchivoCsv(url,tabla)
  File "/home/Franconline/version1/prueba.py", line 18, in hacerArchivoCsv
    tabla1 = read_html(urlDeTabla,attrs={"class":"table-bordered"})
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/pandas/io/html.py", line 1085, in read_html
    return _parse(
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/pandas/io/html.py", line 895, in _parse
    tables = p.parse_tables()
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/pandas/io/html.py", line 213, in parse_tables
    tables = self._parse_tables(self._build_doc(), self.match, self.attrs)
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/pandas/io/html.py", line 726, in _build_doc
    r = fromstring(self.io, parser=parser)
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/lxml/html/__init__.py", line 875, in fromstring
    doc = document_fromstring(html, parser=parser, base_url=base_url, **kw)
  File "/home/Franconline/.virtualenvs/flaskk/lib/python3.8/site-packages/lxml/html/__init__.py", line 761, in document_fromstring
    value = etree.fromstring(html, parser, **kw)
  File "src/lxml/etree.pyx", line 3237, in lxml.etree.fromstring
  File "src/lxml/parser.pxi", line 1876, in lxml.etree._parseMemoryDocument
  File "src/lxml/parser.pxi", line 1757, in lxml.etree._parseDoc
  File "src/lxml/parser.pxi", line 1068, in lxml.etree._BaseParser._parseUnicodeDoc
  File "src/lxml/parser.pxi", line 601, in lxml.etree._ParserContext._handleParseResultDoc
  File "src/lxml/parser.pxi", line 711, in lxml.etree._handleParseResult
  File "src/lxml/parser.pxi", line 649, in lxml.etree._raiseParseError
  File "<string>", line 0
lxml.etree.XMLSyntaxError: b'failed to load external entity ""'

I read in other posts that you have kind of a whitelist for pages and so, and I don’t know if this have something to do with it. But anyways, I’m having this trouble, maybe someone can help me with this. Thanks.

Понравилась статья? Поделить с друзьями:
  • Ose exe ошибка приложения
  • Ottplayer ошибка подключения к источнику потока
  • Osd verrouillage как исправить
  • Ottplayer error get data of plst
  • Osconflib dll ошибка