如何使用Python和lxml解析本地html文件?
我正在用python处理一个本地html文件,我正在尝试使用lxml解析该文件。由于某些原因,我无法正确加载文件,我不确定这是否与没有在本地计算机上设置http服务器、etree使用情况或其他原因有关 我对该代码的引用如下: 这可能是一个相关的问题: 这是我的密码:如何使用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(
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