工作原因,scrapy爬虫速成,在这里带爬虫小白们入门~争取以最详细、简单、易懂的方式带你入门~

以下大部分内容是操作记录,尽量详细以提高可操作性,以备与小白君们分享,也有助于今后个人复习。首先总结一下爬虫的几大步骤:

一、创建项目和爬虫文件;

二、修改爬虫spider(即spider文件夹中你自己创建的py文件):

1、定义链接,即你要爬取的网站url;

2、提取页面,明确你想爬取页面的范围,如列表;

三、数据存储,可以存储到excel、txt等文档中,也可存储到数据库中。

了解scrapy流程,更有助于你了解代码逻辑、学的更快哦,这里有超简单易懂的scrapy 框架介绍,5分钟帮你认识scrapy~

杜哈哈:Scrapy爬虫流程​zhuanlan.zhihu.com

我假设您已经安装好了python和pycharm等编译器,(毕竟是学习python的必备)。如果没有安装好,请看另一篇文章:

杜哈哈:python入门第一课——安装python和编译器​zhuanlan.zhihu.com

一、创建项目和爬虫文件

1. 安装 scrapy、 py3Fdfs

pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple  scrapy   或者 pip install scrapy
pip install py3Fdfs

2. 使用scrapy 创建爬虫项目:

开始搜索栏输入“cmd”打开命令提示符——定位到安装python的文件夹:

scrapy startproject **    (**是自定义的项目名)

3.创建一个 spider:

scrapy genspider xxx  ***     # xxx是项目名,***是待爬网页的url    

例如:

scrapy genspider baidu httpps://baidu.com  

如下图所示,我创建了一个项目“KAKEN0903_2”,爬虫文件是kaken。

  • items:可以用来定义要爬取的字段;
  • middleware:定义中间件,可以对request、response做一些处理,如过滤url、切换ip...
  • pipelines:管道文件,存储、处理字段,如设置数据存储所用的数据库。
  • settings:爬虫基本设置,如开放middleware、pipelines,或设置延时、数据库地址等。

二、修改爬虫spider(即spider文件夹中你自己创建的py文件):

1、定义链接,即你要爬取的网站url;

利用上述步骤创建爬虫项目,能够在爬虫文件中(即Spider文件夹中你定义的.py文件,我的是kaken.py)自动生成定义链接的代码:

class KakenSpider(scrapy.Spider):name = 'kaken'   #一定要记住这个名字,运行爬虫是用到它,即在Terminal运行scrapy crawl kaken# 允许访问的url范围allowed_domains = ["kaken.nii.ac.jp"]  # 待爬取网页的的url,列表中可以放多个url,但是要在允许访问的url范围内哦~start_urls = ["https://kaken.nii.ac.jp/en/search/?kw=&fcdt=1964%2C1973&rw=20"]   #当然了,如果你想爬别的网站了,可以直接在里边改url,一定记得要改

不要忘了导包:

import scrapy   

2、提取页面,明确你想爬取页面的范围,如列表;

因为python中是不强求必须有main函数的,所以在此可以我们暂不定义main函数。那么程序获得url后会自动、首先调用parse函数。

Exmple1. 先来个简单的爬虫:

def parse(self, response):item = response.xpath('//div[@class="listitem xfolkentry"] ').extract_first()   # 定位到要爬取的元素,存放到item变量中print(item)

  • response可以理解成服务器回应你的请求而返回的网页信息;
  • 使用xpath语句定位到你所需的网页上的内容;
  • item是爬取导到的数据;

Exmple2.如果你要爬一个列表:

def parse(self, response):theList = response.xpath('//div[@class="listitem xfolkentry"] ')  # theList是网页中的列表# 如果列表中每条记录的html格式都一样,可以用循环遍历的方式获取每条记录中的数据for i, env in enumerate(theList):  # i:下标;  env:值list_url= response.url   #每条记录的urltitle = response.xpath("元素的xpath路径").extract_first()    #获得每条记录中的titleprint(list_url)

  • enumerate(list)函数的参数是列表,返回的是索引号及其对应的列表元素,在此是每条记录的编号和记录;
  • response.xpath(“xpath路径”)得到的是一个特殊类型的列表,若不加extract()或.extract_first(),将返回一大堆没用的数据(你可以自己试试);加上extract()将得到列表形式的数据,加上.extract_first()则表示获取列表中第一个元素,即可获取干干净净的信息。反正你自己试试吧,加还是不加,反正不会报错~

三、运行爬虫

在 pycharm 的 Terminal 里——输入 scrapy crawl kaken——Enter,就能得到结果啦。

注意!!!

  • 一定要通过linux命令cd 进入到spiders文件夹的上一级文件夹才能运行scrapy crawl kaken。
  • kaken不是kaken.py的kaken哦~,它是你的变量name那里赋的值。还不懂?我再贴一遍“ 二、1、定义链接,即你要爬取的网站url;”那里的代码,里边注释啦。如果改成name="zhihu",那么就是scrapy crawl zhihu
class KakenSpider(scrapy.Spider):name = 'kaken'   #一定要记住这个名字,运行爬虫是用到它,即在Terminal运行scrapy crawl kaken# 允许访问的url范围allowed_domains = ["kaken.nii.ac.jp"]  # 待爬取网页的的url,列表中可以放多个url,但是要在允许访问的url范围内哦~start_urls = ["https://kaken.nii.ac.jp/en/search/?kw=&fcdt=1964%2C1973&rw=20"]   #当然了,如果你想爬别的网站了,可以直接在里边改url,一定记得要改

当然了,你也可以在命令提示符那里运行~

四、其他说明

在上文中,我介绍了scrapy爬虫最最基本、最最必要的操作,努力把每一步都写的比较详细,方便没有编程基础的小白能快速上手。如果当前的操作还不足以满足您的需求,不要着急,在后续文章中将继续补充。

这样安排的原因是,scrapy爬虫像盖房子一样,上述基本操作就是打地基,我们可以不必对地基大改动,而是在此基础上继续添砖加瓦、精装修,(即连接数据库、selenium模拟浏览器、反爬等)。

这个是师傅给我的入门资料:

SCRAPY爬虫实验室 - SCRAPY中文网提供​lab.scrapyd.cn

scrapy xpath空列表_我的第一个爬虫——Scrapy爬虫详细操作入门指南(1)相关推荐

  1. python变量和列表_自学python第一天——变量和列表

    从零开始,万事开头难,从最基础的开始.学python已有几天,因为有C语言和perl语言的基础,学起python确实是很快,我发现python有很多很好的函数功能,比如: chl = "la ...

  2. scala 空列表_如何在Scala中展平列表列表?

    scala 空列表 Flattening of List is converting a list of multiple List into a single List. To flatten Li ...

  3. 用python公众号开书城步骤_资源 | 开放Python书籍:一本短小精悍的初学者入门指南...

    资源 | 开放Python书籍:一本短小精悍的初学者入门指南 作者:机器之心 来源:机器之心 公众号 分享到: 03-25 选自GitHub机器之心整理 参与:思源 如何快速熟悉 Python 编程一 ...

  4. 为什么用python扒取出来的数据为空列表_如何解决python xpath爬取页面得到空列表(语法都对的情况下)...

    引言: 很多网页呈现给我们的静态页面,但是实际上是由服务器端的动态页面生成的.再加上网站设有反爬虫机制,所以抓取到的页面不一定和源码相同. 所以!!从源码里copy xpath,不一定能取到数据! 实 ...

  5. python中data.find_all爬取网站为空列表_利用Golang快速爬取盗版网站的整套音频

    01 前言 最近因为 Zigma 帮我写了个推广 Catcher 小程序软文的原因,答应了他帮他爬了一个盗版音频网站的整套 <李淼谈奇案> . 在制作爬虫脚本的过程中,也是遇到了一些有趣的 ...

  6. stm32f7网口_【STM32F7】STM32F7开发篇-超详细操作步骤

    STM32F7开发资料大全 要想开发程序,必先选一个趁手的工具.这么多年来一直使用MDK来开发,所以熟悉一些.而且MDK对于一些新的技术支持很快,用起来比较方便. 选择对应的F7芯片,首先要安装该型号 ...

  7. Java波斯王子时之沙攻略_波斯王子时之沙详细操作按键指南

    波斯王子时之砂突破既有的地型局限及动作限制,让玩家们可以更巧妙地用地型与难缠的敌人战斗,不论是在角色动作.动态光影的表现以及地形上的各种物理变化,都大大的提昇了. 授权:免费软件 大小:1.36G 语 ...

  8. 人大金仓删除字段_人大金仓数据库(kingbase7d)操作入门指南 Windows

    1.1.12 安装成功,在开始菜单中可以看到以下数据库操作工具: 1.2 数据库卸载 1.2.1 选择 卸载 : 1.2.2 点击 卸载 : 1.2.3 选择 确定 ,开始数据库的卸载 : 1.2.4 ...

  9. Xpath在选择器中正确,在代码中返回的是空列表问题

    Xpath在选择器中正确,在代码中返回的是空列表问题 一.问题: 在进行爬虫的时候我们会用到xpath解析html文件,但是会有一种情况就是在xpath选择器中可以使用,但是在代码中就无法使用的情况. ...

  10. 构建空列表的两种法是_Python 基础3之列表

    今天列表专题的目录如下: 列表基础 1 创建列表 2 访问元素 3 添加元素 4 删除元素 5 list 与 in 6 list 与数字 7 列表生成式 列表进阶 8 其他常用API 9 列表实现栈 ...

最新文章

  1. QT5.3 + vs2012 + box2d环境配置
  2. CPU亲和性的使用与机制--含Xen中VCPU和PCPU的綁定方法
  3. Zero-shot Learning / One-shot Learning / Few-shot Learning
  4. Docker监控方案(TIG)的研究与实践之Influxdb
  5. Discretized Streams (DStreams)离散化流
  6. 【转】大话程序猿眼里的高并发
  7. solutions for 'No Suitable Driver Found For Jdbc'
  8. 创建基于存储过程的数据块
  9. .describe() python_Stataamp;Python | 分别实现多元线性回归
  10. vscode配置c++11
  11. ajax清除session,跳出iframe框架页面后跳转页面
  12. 2021 泰迪杯 C 思路
  13. firework软件linux下,Linux 下的网页三剑客 都是免费的啊 (*^__^*)
  14. pyqt QListView详细用法
  15. Mac pro 安装ubuntu系统
  16. 哪些因素决定了CRM客户管理系统的价格?
  17. 级联选择器实现省市区三级联动
  18. 工程测量的各种数据考点
  19. 利用Flowchart.fun快速可视化递归过程
  20. 高质量 Go 进阶图书,它来了

热门文章

  1. tensorflow学习笔记1:batch normalization 用法
  2. Leap手心发射线,碰撞点用小球表示,并用Line Renderer画出来
  3. Kinect + OpenNI + OpenCV + OpenGL 三维重建
  4. Atitit 登录账号管理法passport 目录 1. 总则 1 1.1. 身份分类登录账号 管理员 操作人员 普通用户 1 1.2. 安全考虑,必须单独分开的账号储存表,使用不同等加密技术与秘
  5. Atitit 小程序后端服务api艾提拉总结 目录 1. 服务端 1 1.1. 开放接口 1 1.1.1. 登录 1 1.1.2. 用户信息 1 1.1.3. 接口调用凭证 2 1.1.4. 数据分
  6. Atitit python3.0 3.3 3.5 3.6 新特性 Python2.7新特性1Python 3_x 新特性1python3.4新特性1python3.5新特性1值得关注的新特性1Pyth
  7. Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
  8. PAIP.MYSQL SLEEP 连接太多解决
  9. Julia : SharedArrays与@async比快
  10. Julia : The Power Sum的算法