使用scrapy爬取海外网学习频道
一:创建项目文件
1:首先在终端使用命令scrapy startproject huaerjieribao 创建项目
2:创建spider
首先cd进去刚刚创建的项目文件overseas
然后执行genspider,并写入爬虫名称和爬虫网站域名
命令如下:
cd overseas haiwaistudy theory.haiwainet.cn
3:此时会发现在spider文件中多了一个 haiwaistudy.py,
4:scrapy默认不能再IDE中调试的所以这里我们使用一个小技巧,我们再根目录下新建一个entrypoint.py,用于后面的调试
二:编写项目文件
1:然后编写item.py,相当于容器
创建 Item 需要继承 scrapy.Item 类,并且定义类型为 scrapy.Field 的字段
2:编写爬虫文件haiwaistudy.py,定义了爬取范围,爬取内容,是否有下一页循环等信息
parse()---------parse()方法的参数 resposne 是 start_urls 里面的链接爬取后的结果。
extract_first()-----------用 extract_first()方法来获取第一个元素
extract()------获取所有结果组成的列表,所以使用 extract()方法
遇见翻页之类的情况,构造请求时需要用到 scrapy.Request。 这里我们传递两个参数一-url 和 callback
口 url :它是请求链接。
口 callback:它是回调函数。 当指定了该回调函数的请求完成之后,获取到响应,引擎会将该 响应 作为参数传递给这个回调函数。 回调函数进行解析或生成下一个请求,回调函数如上文 的 parse()所示。
urljoin()--------- urljoin()方法可以将相对 URL 构造成一个绝对的 URL
如果是一个简单的爬虫接下来可以直接使用命令的到爬虫结果了,
scrapy crawl haiwaistudy
保存成 JSON 文件:
scrapy crawl haiwaistudy -o quotes.json
以每一个 Item 输出一行 JSON:
scrapy crawl haiwaistudy -o quotes.jl
其他格式:
scrapy crawl haiwaistudy-o quotes .csv
scrapy crawl haiwaistudy-o quotes.xml
scrapy crawl haiwaistudy -o quotes.pickle
scrapy crawl haiwaistudy-o quotes.marshal
scrapy crawl haiwaistudy -o ftp://user:pass@ftp.example.com/path/to/quotes.csv
这里我个人将他存为了csv格式:
三:存入数据库:
如果想要将数据存入MongoDB则需要在Item Pipeline里进行处理,Item Pipeline的作用是:
口清理 HTML 数据。
口 验证爬取数据,检查爬取字段。
口 查重井丢弃重复内容。
口 将爬取结果保存到数据库。
要实现Item Pipeline很简单,只需要定义一个类并实现 process item()方法即可。启用 Item Pipeline 后, Item Pipeline 会自动调用这个方法。 process item()方法必须返回包含数据的字典或 Item 对象, 或者抛出 Dropltem 异常。
process_item()方法有两个参数。 一个参数是 item,每次 Spider 生成的 Item 都会作为参数传递过 来。 另一个参数是 spider,就是 Spider 的实例。
四:修改settings.py文件
在settings文件中加入以下信息
五:运行爬虫
使用终端,进入overseas文件夹,然后键入scrapy crawl haiwaistudy
然后待爬取完成可以到数据库里查看存储结果,这篇文章当 中没有写分析网站相关的内容,因为这次爬取得网站很简单没有啥加密手段,所以我没有写分析过程
GitHub代码地址:
https://github.com/meixialee/overseas
微信公众号地址:
https://mp.weixin.qq.com/s?__biz=MzU2MzcwOTAzNQ==&mid=2247483752&idx=1&sn=b1334098ca686bcf6e280683c9861f4d&chksm=fc57546ccb20dd7a6935d235a3965b9ece5a696dbda12d952c108ec6e3a8079db4fed13e0456&token=269404096&lang=zh_CN#rd
使用scrapy爬取海外网学习频道的更多相关文章
- scrapy 爬取纵横网实战
前言 闲来无事就要练练代码,不知道最近爬取什么网站好,就拿纵横网爬取我最喜欢的雪中悍刀行练手吧 准备 python3 scrapy 项目创建: cmd命令行切换到工作目录创建scrapy项目 两条命 ...
- scrapy 爬取当当网产品分类
#spider部分import scrapy from Autopjt.items import AutopjtItem from scrapy.http import Request class A ...
- scrapy爬取中关村在线手机频道
# -*- coding: utf-8 -*- import scrapy from pyquery import PyQuery as pq from zolphone.items import Z ...
- 爬虫入门(四)——Scrapy框架入门:使用Scrapy框架爬取全书网小说数据
为了入门scrapy框架,昨天写了一个爬取静态小说网站的小程序 下面我们尝试爬取全书网中网游动漫类小说的书籍信息. 一.准备阶段 明确一下爬虫页面分析的思路: 对于书籍列表页:我们需要知道打开单本书籍 ...
- Scrapy爬虫(5)爬取当当网图书畅销榜
本次将会使用Scrapy来爬取当当网的图书畅销榜,其网页截图如下: 我们的爬虫将会把每本书的排名,书名,作者,出版社,价格以及评论数爬取出来,并保存为csv格式的文件.项目的具体创建就不再多讲 ...
- scrapy爬取相似页面及回调爬取问题(以慕课网为例)
以爬取慕课网数据为例 慕课网的数据很简单,就是通过get方式获取的 连接地址为https://www.imooc.com/course/list?page=2 根据page参数来分页
- Scrapy爬取美女图片 (原创)
有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用pyt ...
- Scrapy爬取美女图片第三集 代理ip(上) (原创)
首先说一声,让大家久等了.本来打算那天进行更新的,可是一细想,也只有我这样的单身狗还在做科研,大家可能没心思看更新的文章,所以就拖到了今天.不过忙了521,522这一天半,我把数据库也添加进来了,修复 ...
- Scrapy爬取美女图片第四集 突破反爬虫(上)
本周又和大家见面了,首先说一下我最近正在做和将要做的一些事情.(我的新书<Python爬虫开发与项目实战>出版了,大家可以看一下样章) 技术方面的事情:本次端午假期没有休息,正在使用fl ...
随机推荐
- Spring的IOC/DI使用到的技术
一.了解Spring IOC/DI 1:Spring有两大核心技术,控制反转(Inversion of Control, IOC)/依赖注入(Dependency Injection,DI)和面向切面 ...
- 【Java】XML文件的解析
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
- js 前端有消息了 声音提示给用户
前言:工作中有需求,在数据变更有变更时采用声音提示给用户,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9936180.html 网站地址:我的个 ...
- PDF格式的“在线阅读”和“下载”
产生背景: 一个需求,用户可在线阅读PDF,也可下载到本地.听需求来源说人家的网站上的可以做,问我们能做吗,需要这个功能,就要来了网址,看看页面. 问题:上传PDF文件后,发现访问地址在浏览器上打开, ...
- 【读书笔记】iOS-成为一名开发者
iOS开发者计划是按年付费的,在过期前60天可以开始续费.如果你不续费的话,你将无法发布应用.另外苹果会吊销你的开发者证书和发布证书.最后,苹果将你在iTunes App Store上的所有应用下架. ...
- VUE基于ElementUI搭建的简易单页后台
一.项目链接 GitHub 地址: https://github.com/imxiaoer/ElementUIAdmin 项目演示地址:https://imxiaoer.github.io/Eleme ...
- Angular基础(六) DI
一.依赖注入 a) 如果模块A需要依赖模块B,通常的做法是在A中导入B,import{B} from ‘B’,但有一些场合需要解除这种直接依赖,比如单元测试时需要mock一个B对象.还有时要创建B ...
- Storm的DRPC
RPC:Remote Procedure Call DRPC:Distributed RPC Hadoop提供了RPC的实现机制,实现方法见:<>,本文主要介绍Storm的DRPC. ...
- 操作过程-CentOS7下添加新硬盘扩充已经存在的逻辑卷分区的存储空间
Linux添加硬盘扩充已有分区存储空间方式 总体步骤 磁盘初始化分区 创建物理卷 扩展卷组 扩展逻辑卷 通知文件系统生效 磁盘初始化分区 [root@oracledb ~]# fdisk -l 磁 ...
- Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
在主工程(ASP.NET WEB/WCF等)的NuGet里引用 System.Data.SQLite.Core 不仅仅是Service需要引用,主工程即使不直接使用SQLite的库,也需要引用. 若使 ...