Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python和lxml解析本地html文件?_Python_Python 2.7 - Fatal编程技术网

如何使用Python和lxml解析本地html文件?

如何使用Python和lxml解析本地html文件?,python,python-2.7,Python,Python 2.7,我正在用python处理一个本地html文件,我正在尝试使用lxml解析该文件。由于某些原因,我无法正确加载文件,我不确定这是否与没有在本地计算机上设置http服务器、etree使用情况或其他原因有关 我对该代码的引用如下: 这可能是一个相关的问题: 这是我的密码: from lxml import html import requests page = requests.get('C:\Users\...\sites\site_1.html') tree = html.fromstring(

我正在用python处理一个本地html文件,我正在尝试使用lxml解析该文件。由于某些原因,我无法正确加载文件,我不确定这是否与没有在本地计算机上设置http服务器、etree使用情况或其他原因有关

我对该代码的引用如下:

这可能是一个相关的问题:

这是我的密码:

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
我得到的回溯显示:

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
C:\Python27\python.exe“C:/Users/../extract\u html/extract.py”
回溯(最近一次呼叫最后一次):
文件“C:/Users/../extract\u html/extract.py”,第4行,在
page=requests.get('C:\Users\…\sites\site\u 1.html'))
get中第69行的文件“C:\Python27\lib\site packages\requests\api.py”
返回请求('get',url,params=params,**kwargs)
文件“C:\Python27\lib\site packages\requests\api.py”,第50行,在请求中
response=session.request(方法=method,url=url,**kwargs)
文件“C:\Python27\lib\site packages\requests\sessions.py”,第465行,在请求中
resp=自我发送(准备,**发送)
文件“C:\Python27\lib\site packages\requests\sessions.py”,第567行,在send中
adapter=self.get\u适配器(url=request.url)
get\U适配器中的文件“C:\Python27\lib\site packages\requests\sessions.py”,第641行
raise InvalidSchema(“未找到“%s”的连接适配器%url)
requests.exceptions.InvalidSchema:未找到“C:\Users\…\sites\site_1.html”的连接适配器
进程已完成,退出代码为1

您可以看到它与“连接适配器”有关,但我不确定这是什么意思。

如果文件是本地文件,您不应该使用
请求
——只需打开文件并将其读入即可<代码>请求期望与web服务器对话

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

有一种更好的方法: 使用
parse
函数代替
fromstring

tree = html.parse("C:\Users\...site_1.html")
print(html.tostring(tree))

你也可以尝试用漂亮的汤

from bs4 import BeautifulSoup
f = open("filepath", encoding="utf8")     
soup = BeautifulSoup(f)
f.close()

为什么不从本地HTML文件的一个简单示例开始呢?使您更容易学习,您可以在此处发布内容,使每个人都更容易理解。不幸的是,该文件太大,我担心简化它可能会产生程序的输出。好的,我正在尝试,但它告诉我page.text中的.text是无法解决的。@rdevn00b:我的错。是的,只需使用
page
,而不是
page.text
。我会更新我的答案。别忘了先导入:
从lxml导入html