用爬虫竟然得到了所在学学同学的照片,还帮助哥们儿追其他系的女孩。
–引自 《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进行处理,非常感谢!