刚写完立马来打脸了,新进来的可以先看问题开始的部分在回上来看这里
以下解决方法适用于不适用scrapy爬虫框架的同学,不然的话安装scrapy后依然会给升级lxml,然后又不能使用etree模块
这次的解决方案应该是没问题,两方面丢兼顾了。直接在anconda的cmd中先安装conda install scrapy安装完后再键入conda install lxml==3.7.2安装这个版本的lxml就可以了(安装时会提示降级其他依赖库选择y就行),scrapy也能用,etree模块直接也能使用。原因好像是因为最新版本的lxml已经不再有etree模块了
问题
环境:Anconda(python3.7)+pyharm
使用pycharm引用lxml库中的etree时,代码编辑的时候不飘红,运行却报错找不到指定模块!
解决
Anconda下卸载lxml库,选中lxml右击,mark for removal,在点击右下角Apply即可删除lxml库
删除后在Anconda里
点击等会你要使用lxml的环境的绿色箭头,Open on terminal,会打开cmd窗口,输入pip install lxml
等待安装完成
然后重新运行你的py文件你会发现不会报错了
还有第二个解决方法,我从其他博客看到的也没有试过
from lxml import html
text=```xxx```//测试的html文本
etree = html.etree
htmlDiv = etree.HTML(text)
title = htmls.xpath("//meta[1]/@content")
print(title)
原因
我也不是特别清楚,也是我自己发现的。似乎Anconda安装的lxml不能直接这样调用etree,直接使用原生python3.7+pycharm也可以避免这个问题,但是原生python似乎安装不了scrapy的爬虫框架,所以我才使用了anconda,谁知道anconda又出现这样的毛病。可能原生python似乎安装不了scrapy的爬虫框架是我自己的问题(1.安装时会提示没有c++编译套件 2.安装不了twisted,这个现在好像还只有2.7支持,从其它途径下载支持3.x的我运行的时候又会报错没有win32api库,这个win32api库似乎很早就不支持3.x了,我也不是很清楚。)红字都是我这边自己认为的,还没有解决的。也希望有了解的能留言
下一篇可能就是anconda也安装不了scrapy的解决办法了