2015-09-24 12 views
7

Ich arbeite mit einer lokalen HTML-Datei in Python, und ich versuche, lxml zu verwenden, um die Datei zu analysieren. Aus irgendeinem Grund kann ich die Datei nicht richtig laden, und ich bin mir nicht sicher, ob dies damit zu tun hat, dass kein http-Server auf meinem lokalen Rechner oder auf einem anderen Rechner installiert ist.Wie verwende ich Python und Lxml, um eine lokale HTML-Datei zu analysieren?

Meine Referenz für diesen Code war: http://docs.python-guide.org/en/latest/scenarios/scrape/

Dies ist ein verwandtes Problem sein könnte: Requests : No connection adapters were found for, error in Python3

Hier ist mein Code:

from lxml import html 
import requests 

page = requests.get('C:\Users\...\sites\site_1.html') 
tree = html.fromstring(page.text) 

test = tree.xpath('//html/body/form/div[3]/div[3]/div[2]/div[2]/div/div[2]/div[2]/p[1]/strong/text()') 

print test 

Die Zurückverfolgungs, die ich erhalte lautet:

C:\Python27\python.exe "C:/Users/.../extract_html/extract.py" 
Traceback (most recent call last): 
    File "C:/Users/.../extract_html/extract.py", line 4, in <module> 
    page = requests.get('C:\Users\...\sites\site_1.html') 
    File "C:\Python27\lib\site-packages\requests\api.py", line 69, in get 
    return request('get', url, params=params, **kwargs) 
    File "C:\Python27\lib\site-packages\requests\api.py", line 50, in request 
    response = session.request(method=method, url=url, **kwargs) 
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 465, in request 
    resp = self.send(prep, **send_kwargs) 
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 567, in send 
    adapter = self.get_adapter(url=request.url) 
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 641, in get_adapter 
    raise InvalidSchema("No connection adapters were found for '%s'" % url) 
requests.exceptions.InvalidSchema: No connection adapters were found for 'C:\Users\...\sites\site_1.html' 

Process finished with exit code 1 

Sie können sehen, dass es hat etwas mit einem "Connection Adapter" zu tun, aber ich bin mir nicht sicher, was das bedeutet.

+0

Warum beginnen Sie nicht von einem minimalen Beispiel Ihrer lokalen HTML-Datei? Erleichtert das Lernen für Sie und Sie können die Inhalte hier posten, so dass es für alle leichter ist, mitzukommen. – Midnighter

+0

Leider ist die Datei riesig und ich befürchte, dass sie die Ausgabe des Programms vereinfachen könnte. – rdevn00b

Antwort

13

Wenn die Datei lokal ist, sollten Sie nicht requests verwenden - öffnen Sie einfach die Datei und lesen Sie sie ein. requests erwartet, mit einem Webserver zu sprechen.

with open(r'C:\Users\...site_1.html', "r") as f: 
    page = f.read() 
tree = html.fromstring(page) 
+0

Ok, ich versuche das, aber es sagt mir, dass der .text in page.text nicht auflösbar ist. – rdevn00b

+0

Wenn ich einfach 'tree = html.fromstring (Seite)' 'es scheint zu funktionieren ... – rdevn00b

+0

@ rdevn00b: meine schlechte. Ja, benutze einfach 'page', nicht' page.text'. Ich werde meine Antwort aktualisieren. –

Verwandte Themen