不会python,也可以开始爬虫

用爬虫竟然得到了所在学学同学的照片,还帮助哥们儿追其他系的女孩。

–引自 《python 3 络爬虫开发实战》序言

1. 不会python怎么爬

听别人说爬虫,自己也一直想学学,苦于没弄过python,一直没有付诸行动。虽然通过别的语言也可以实现,总的原理就是获取 页内容、解析、存储,但现在好像说爬虫不用python就“不正宗”似的。

弄了本《python 3 络爬虫开发实战》看看,在序言里就看到了这样一段话。大概浏览了一下书的内容,觉得是不是可以不学python,直接开始配环境,装框架,通过配置的方式达到目的。 **毕竟不是想做python专职开发,**只是想“爬一爬”,通过学习爬虫,顺带学一些python的知识。

不过一定要注意,不让爬的一定不能爬,爬公开的内容也要注意,尽量降低频率,像正常访问一样,别给人家服务器造成压力。

2. 我也去大学爬点“风景”

结构比较简单,非常符合作为菜鸟的我开始学习的样例。

3. 安装python环境

安装环境及相关插件就全部采用最新版本吧,官 地址:https://www.python.org/

勾选Add Python 3.10 to PATH, 添加对应的环境变量。

因为默认安装在AppData,改一下,选择Customize installation,进入下一步:

修改安装地址。点击Install按钮开始安装。

4. 安装Scrapy

Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

4.1 安装依赖

依次执行如下命令,安装依赖,类似其他包管理器一样

下载速度不快,慢慢等等安装完成即可:

5. 创建Scrapy项目

执行命令创建一个项目,名称暂定为“GetPhotos”

创建成功,在当前目录创建了一个以项目名名称的文件夹。并且给出了下一步的提示。

文件内容如下:

可以看到spiders文件夹下多了一个名为GiveMePhotos.py的文件,其内容如下

  • name: spider的名称
  • allowed_domains: 允许爬的域名
  • start_urls:起始地址
  • parse方法:即处理请求结果的方法

start_urls肯定要改成我们的目标地址:https://culture.sdu.edu.cn/sdyx/zxxq/17.htm

然后就是分析这个 页的元素,即parse方法,修改后的代码如下

如果用过jQuery应该很容易理解这段代码,无非就是找到li标签,循环遍历,然后再提取对应的节点。最终将解析的内容给item实体。

5.3 下载图片

scrapy框架提供了相应的下载组件,如果不需要图片处理,用普通的文件下载FilesPipeline就行了,如果需要处理可以采用ImagessPipeline,这次只要下载就行了,修改pipelines.py文件

代码含义是:

  • 定义一个GetphotosPipeline类,继承自FilesPipeline
  • 重写file_path方法,这是一个用于指定文件名的方法,可以通过Url截取,我试着用标题作为文件名。
  • 重写get_media_requests方法,调用Request方法下载

5.4 项目配置

  • 修改settings.py, 设置下载文件存放目录。

在settings.py中添加一行:

设置为子目录imgs。

  • 设置FilesPipeline

找到ITEM_PIPELINES节点,

默认是用“#” 注释掉的,去掉注释。

6. 运行获取结果

执行命令:

在命令窗口可以看到爬虫启动、获取结果直到自动结束的过程。

项目目录自动多了一个imgs文件夹,如下图

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月13日
下一篇 2021年11月13日

相关推荐