爬虫入门到精通_框架篇13(PySpider框架基本使用及抓取TripAdvisor实战)_PySpider下载安装,项目实战

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 werkzeug
0.16.1
在这里插入图片描述
原因:flask版本过高
解决:执行命令
pip install flask1.0
在这里插入图片描述
查了下是因为urllib3或chardet版本过高,与支持的版本不匹配
查看对应 的__init__.py文件内的说明 :
在这里插入图片描述
解决:执行命令
pip install urllib3
1.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:
点击下一页
在这里插入图片描述

更改PySpider模式

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/522256.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RDB 和 AOF 的实现原理以及优缺点

一个工作了 5 年的粉丝私信我, 关于 RDB 和 AOF 的实现原理 这个问题在面试的时候,应该怎么回答?于是我把之前整理过的一个高手回答整理成文档发给了他,后来他参考这个回复在面试的时候顺利拿到了 offer 今天我把这个文档分享给大…

安卓7原生相机切到视频崩溃

目录 1、查看日志 2、分析日志、提取重点 3、寻找解决方法 author daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识https://blog.csdn.net/qq_40715266?typeblog 1、查看日志 由于安…

文献学习-13-机器人顶刊IJRR近期国人新作(2024.3)

一、IJRR简介 The International Journal of Robotics Research(IJRR)是机器人领域的高水平学术期刊,专注于发布关于机器人技术和相关领域的最新研究成果。IJRR创刊于1982年,是该领域的第一本学术刊物,2022-2023最新影…

141 Linux 系统编程18 ,线程,线程实现原理,ps –Lf 进程 查看

一 线程概念 什么是线程 LWP:light weight process 轻量级的进程,本质仍是进程(在Linux环境下) 进程:独立地址空间,拥有PCB 线程:有独立的PCB,但没有独立的地址空间(共享) 区别:在于是否共…

echarts中toolbox 中文乱码问题

问题描述 本地引用的echarts源文件,页面其他部分编码显示正常,唯独toolbox鼠标悬停在上面时提示信息显示乱码。 如图所示: 尝试过的方法 使用sublime text 3,notepad,记事本更改文件编码为utf-8引入时,在sc…

使用Portainer让测试环境搭建飞起来

Docker的用处不多加赘述,Docker目前有以下应用场景: 测试:Docker很适合用于测试发布,将 Docker 封装后可以直接提供给测试人员进行运行,不再需要测试人员与运维、开发进行配合,进行环境搭建与部署。 测试…

无人机|LQR控制算法及其无人机控制中的应用仿真

前言 LQR全称Linear Quadratic Regulator(线性二次调节器),顾名思义用于解决形如 x ˙ A x B u y C x D u \begin{aligned}\dot{x}&AxBu\\y&CxDu\end{aligned} x˙y​AxBuCxDu​ 线性时不变系统的一种线性控制方法,…

动态代理详解

动态代理 一、JDK动态代理二、CGLIB动态代理三、Javassist动态代理技术 在程序运行阶段,在内存中动态生成代理类,被称为动态代理,目的是为了减少代理类的数量。解决代码复用的问题。 一、JDK动态代理 DK动态代理技术:只能代理接口…

网络安全防御保护 Day7

1.因为FW1和FW2已处于双机热备状态,所以只需要对主设备进行配置即可。进入FW1的配置界面,选择“网络”界面,点击“IPsec”,进行IPsec通道的基本配置,这里选择的是“电信”链路。 2.完成上述配置后,进行待加…

Linux——基础IO

目录 前言 C语言文件操作 stdin & stdout & stderr 系统文件IO open close write read 文件描述符fd 重定向 dup2 Linux下一切皆文件 缓冲区 简易缓冲区 文件系统 磁盘 创建文件 删除文件 查看文件 软硬链接 软链接 硬链接 动静态库 静态库 …

网络安全: Kali Linux 使用 hping3 阻塞目标主机

目录 一、实验 1.环境 2. 物理机测试远程连接 Windows server 3.Kali Linux 使⽤ hping3 ⼯具 二、问题 1. 常见的 DoS ⽅式有哪些 2.hping3 测试⼯具的命令格式和选项参数 一、实验 1.环境 (1)主机 表1 主机 系统版本IP备注Kali Linux2024.…

第七届强网杯-PWN-【warmup】

文章目录 warmup libc 2.35检查IDA逆向maindeldelete_noteadd_noteshow_noteinput_numberread_16atoi __errno_location()相关解释prctl相关 思路高版本off by null利用技巧产生chunk extend泄露libc基地址泄露heap基地址修改放入tcachebin中的chunk的fd为stdout最后add两个chu…