1 PySpider框架基本用法
PySpider框架:
- 去重处理
- PyQuery提取
- 错误重试
- 多进程处理
- 代理简洁
- JavaScript渲染
- 结果监控
- WebUI管理
安装PySpider:
pip install pyspider
报错:
主要是async是python3.7的保留字,pyspider库中的有些文件与之重复而出现报错,就三个文件,这三个文件的找法可以参照《windows客户端pip安装pyspider完全指南(SyntaxError:invalid syntax、async语法报错、非引用替换关键字、全局查找针对性替换、Pycharm)》,async的具体位置在pycharm中会有红色标注,替换的词可以任意选择,我就在后面加了一个下划线即“async_”;
更改:run.py中async -> async_,继续报下面的错:
原因分析:无法从“集合”导入名称“映射”,因为Python3.10版本以后对requests 库进行调整,collections中不能直接调用方法Mapping,MutableMapping办法就是:找到引用collections模块的__init__.py文件,调整从abc导入:
本例的路径是 D:\Program Files\Python\lib\collections_init_.py
# 将这两句
from collections import Mapping
from collections import MutableMapping
# 替换为以下两句
from collections.abc import Mapping
from collections.abc import MutableMapping
# 即用collections.abc代替collections调用方法Mapping、MutableMapping
更改后,继续报错:
phantomjs not found, continue running without it.
解决:需要下载phantomjs,然后把phantomjs.exe文件复制到与python.exe文件同一目录下,继续报错:
phantomjs fetcher running on port 25555。
解决:版本太高,错误较多
更换版本:Python36
报错:
原因:wsgidav版本过高,
解决:执行命令
pip install wsgidav2.4.1
原因:werkzeug版本过高
解决:执行命令
pip install werkzeug0.16.1
原因:flask版本过高
解决:执行命令
pip install flask1.0
查了下是因为urllib3或chardet版本过高,与支持的版本不匹配
查看对应 的__init__.py文件内的说明 :
解决:执行命令
pip install urllib31.26.0
pip install chardet==4.0
2 PhantomJS下载
3 demo示例
create:
效果:
4 项目实战(抓取TripAdvisor)
爬取伦敦景点地标
项目说明
步骤1:创建项目
步骤2:输入地址
因为证书报错:
后续直接用视频里的截图。
步骤3:
点击图中位置,将所有该界面的http的链接查找(index_page())出来.
步骤4:
点击上述任一链接,显示tile和url。
步骤5:
点击web,出现浏览器上的效果
步骤6:
点击html,可直接查看标签元素
步骤7:
有些不需要的href,更改成tile查找。
步骤8:
更改detail_page,用选择器获取详情页信息。
步骤9:
存入数据库
效果:
步骤10:
点击下一页