Python 3.5.1安装lxml

Python内部自带了很多的xml解析库,平时用起来也没什么问题,但遇到中文就over了,大名鼎鼎的lxml就不说了,下面来说说安装过程,以及这个过程中猜到的N个坑


1. 部署环境

系统:SLES 10

Python:python 3.5.1

lxml:lxml 3.6.0

libxml2:libxml2-2.9.0

libxslt:libxslt-1.1.28


2. 部署顺序

(1)装系统,这句纯属扯淡

(2)编译python,直接./configure --prefix=/usr/local/python3.5

(3)编译lxml 3.6,最开始遇到的提示是没有安装libxml2,按照正常逻辑,下载libxml2,然后编译安装,./configure --with-python=/usr/local/python3.5/bin/python3.5


各种大坑开始出现

坑1:relocation R_X86_64_32S against `_PyObject_NextNotImplemented' can not be used when making a shared object; recompile with -fPIC

原因:最开始下载的是libxml2.9.3版本,无论怎么编译都是这个报错,在网上找了N个方法,甚至重新编译了python,结果还是不行,后来想想,换个其他版本的吧,2.9是个大版本,就换这个了,结果正常,尼玛,官网稳定版不兼容

(4)编译libxslt,一切正常

(5)编译lx

2025-07-07 15:39:05 [scrapy.utils.log] INFO: Scrapy 2.13.3 started (bot: scrapybot) 2025-07-07 15:39:05 [scrapy.utils.log] INFO: Versions: {&#39;lxml&#39;: &#39;6.0.0&#39;, &#39;libxml2&#39;: &#39;2.11.9&#39;, &#39;cssselect&#39;: &#39;1.3.0&#39;, &#39;parsel&#39;: &#39;1.10.0&#39;, &#39;w3lib&#39;: &#39;2.3.1&#39;, &#39;Twisted&#39;: &#39;25.5.0&#39;, &#39;Python&#39;: &#39;3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:38:34) [MSC v.1936 &#39; &#39;64 bit (AMD64)]&#39;, &#39;pyOpenSSL&#39;: &#39;25.1.0 (OpenSSL 3.5.1 1 Jul 2025)&#39;, &#39;cryptography&#39;: &#39;45.0.5&#39;, &#39;Platform&#39;: &#39;Windows-10-10.0.22631-SP0&#39;} Traceback (most recent call last): File "D:\python\python3.11.5\Lib\site-packages\scrapy\spiderloader.py", line 106, in load return self._spiders[spider_name] ~~~~~~~~~~~~~^^^^^^^^^^^^^ KeyError: &#39;faq_spider&#39; During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\code\nepu_spider\run_all_spiders.py", line 15, in <module> process.crawl(name) File "D:\python\python3.11.5\Lib\site-packages\scrapy\crawler.py", line 338, in crawl crawler = self.create_crawler(crawler_or_spidercls) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\python\python3.11.5\Lib\site-packages\scrapy\crawler.py", line 374, in create_crawler return self._create_crawler(crawler_or_spidercls) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\python\python3.11.5\Lib\site-packages\scrapy\crawler.py", line 458, in _create_crawler spidercls = self.spider_loader.load(spidercls) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\python\python3.11.5\Lib\site-packages\scrapy\spiderloader.py", line 108, in load raise KeyError(f"Spider not found: {spider_name}") KeyError: &#39;Spider not found: faq_spider&#39;
最新发布
07-08
你遇到的错误是: ``` KeyError: &#39;Spider not found: faq_spider&#39; ``` 这意味着 Scrapy 无法找到名为 `faq_spider` 的爬虫类。这是由于你在 `run_all_spiders.py` 中尝试运行的爬虫名称与实际定义的爬虫类中的 `name` 属性不匹配。 --- ## ✅ 原因分析 在你的 `spiders/faq_spider.py` 文件中,你定义了如下内容: ```python class FaqSpider(scrapy.Spider): name = &#39;faq&#39; # 这个 name 是你在命令行或脚本中调用时使用的名称 ``` 但你在执行脚本时传入的是 `&#39;faq_spider&#39;`,Scrapy 就会去查找是否有爬虫设置了 `name = &#39;faq_spider&#39;`,结果找不到,就报错了。 --- ## ✅ 解决方案 ### ✅ 方法一:修改 `run_all_spiders.py` 中的爬虫名称为实际定义的 `name` 将: ```python spider_names = [&#39;faq_spider&#39;, &#39;notice_spider&#39;, &#39;rule_spider&#39;, &#39;department_spider&#39;] ``` 改为: ```python spider_names = [&#39;faq&#39;, &#39;notice&#39;, &#39;rule&#39;, &#39;department&#39;] ``` 因为你的每个 Spider 类中定义的 `name` 分别是 `&#39;faq&#39;`, `&#39;notice&#39;`, `&#39;rule&#39;`, `&#39;department&#39;`。 --- ### ✅ 方法二:修改各个 Spider 的 `name` 字段为你想调用的名字(如 `faq_spider`) 例如,在 `faq_spider.py` 中: ```python class FaqSpider(scrapy.Spider): name = &#39;faq_spider&#39; # 改成你想通过 run_all_spiders.py 调用的名称 ``` 然后其他爬虫也类似地修改其 `name` 属性即可。 --- ## ✅ 修改后的完整 `run_all_spiders.py` 确保该文件位于项目根目录(与 `scrapy.cfg` 同级): ```python from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings # 获取 Scrapy 项目的设置 settings = get_project_settings() # 创建 CrawlerProcess 实例 process = CrawlerProcess(settings) # 添加需要运行的爬虫名称(必须与 spider.name 完全一致) spider_names = [&#39;faq&#39;, &#39;notice&#39;, &#39;rule&#39;, &#39;department&#39;] for name in spider_names: process.crawl(name) # 启动爬虫 if __name__ == &#39;__main__&#39;: process.start() ``` --- ## ✅ 检查点 1. 确保每个爬虫类中定义的 `name` 与你传入的名称完全一致; 2. 确保 `SPIDER_MODULES` 设置正确(默认自动识别); 3. 确保 `scrapy.cfg` 存在,并且 `default` 指向正确的项目模块; 4. 确保没有拼写错误(如 `FaqSpider` 是否被正确定义、导入); --- ##
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值