本博客包含多个文档和书籍的翻译,但有能力者推荐阅读英文原版

【Python开发】利用Scrapy开发爬虫二

Python Alan 2个月前 (09-23) 452次浏览 0个评论

最近在进行爬虫技术的重新学习,本文是对【Python开发】利用Scrapy开发爬虫的补充。

Cookies 实现内容抓取

在进行 Selenium 模拟登录后,可存储 Cookie 并再下一次访问时直接调取 Cookie 进行内存爬取。

更新贴出完整代码(系统 macOS):

为能正常使用 Cookie,需在 settings.py 中进行配置

上面这一小段知乎登录的代码还有一些优化空间,中英文验证码都跑通了,为便于阅读源码和使用拆分为了几个方法,在编写过程中我自己的 macOS 对于 PyUserInput的支持似乎发生过变化,发现并不能进行模拟点击操作,后来测试 pynput 等开源的包在执行时都未能达到效果。

最终还是使用selenium自带的ActionChains来进行偏移实现对中文倒立文字的点击,以及双击避免在预填内容之后的重复输入。这样反倒不用在计算时加上浏览器导航以及 macOS 顶部菜单的距离。以上保留了PyUserInput和导航计算相关的代码,或许在其他的电脑上仍可以使用。

知乎文字倒立识别

https://github.com/muchrooms/zheye

下载将zheye放到项目目录下,并安装依赖

代码参见以上chinese_captcha部分

常见问题

1、fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached

这个问题的解决方案有很多,比如直接下载文件并指定该文件目录(如/home/alan/):

或直接下载该文件命名为fake_useragent_版本号.json(如fake_useragent_0.1.11.json)到临时目录中(临时目录可通过Python 的内置命令tempfile.gettempdir()进行获取),这样也就无需再指定 path 参数

对于第二种方法,我们还可以编写一段代码直接在自定义Middleware初始化时自动为我们完成下载工作:

值得一提的是,在 macOS 下操作时可能会出现报错

此时执行如下命令再运行即可(其中的3.6可根据具体的版本进行修改)

其实质是对certifi包进行了安装升级,因此类似下面的命令也可达到相同的效果

 

 

喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址