scrapy xpath空列表_我的第一个爬虫——Scrapy爬虫详细操作入门指南(1)
工作原因,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)相关推荐
- python变量和列表_自学python第一天——变量和列表
从零开始,万事开头难,从最基础的开始.学python已有几天,因为有C语言和perl语言的基础,学起python确实是很快,我发现python有很多很好的函数功能,比如: chl = "la ...
- scala 空列表_如何在Scala中展平列表列表?
scala 空列表 Flattening of List is converting a list of multiple List into a single List. To flatten Li ...
- 用python公众号开书城步骤_资源 | 开放Python书籍:一本短小精悍的初学者入门指南...
资源 | 开放Python书籍:一本短小精悍的初学者入门指南 作者:机器之心 来源:机器之心 公众号 分享到: 03-25 选自GitHub机器之心整理 参与:思源 如何快速熟悉 Python 编程一 ...
- 为什么用python扒取出来的数据为空列表_如何解决python xpath爬取页面得到空列表(语法都对的情况下)...
引言: 很多网页呈现给我们的静态页面,但是实际上是由服务器端的动态页面生成的.再加上网站设有反爬虫机制,所以抓取到的页面不一定和源码相同. 所以!!从源码里copy xpath,不一定能取到数据! 实 ...
- python中data.find_all爬取网站为空列表_利用Golang快速爬取盗版网站的整套音频
01 前言 最近因为 Zigma 帮我写了个推广 Catcher 小程序软文的原因,答应了他帮他爬了一个盗版音频网站的整套 <李淼谈奇案> . 在制作爬虫脚本的过程中,也是遇到了一些有趣的 ...
- stm32f7网口_【STM32F7】STM32F7开发篇-超详细操作步骤
STM32F7开发资料大全 要想开发程序,必先选一个趁手的工具.这么多年来一直使用MDK来开发,所以熟悉一些.而且MDK对于一些新的技术支持很快,用起来比较方便. 选择对应的F7芯片,首先要安装该型号 ...
- Java波斯王子时之沙攻略_波斯王子时之沙详细操作按键指南
波斯王子时之砂突破既有的地型局限及动作限制,让玩家们可以更巧妙地用地型与难缠的敌人战斗,不论是在角色动作.动态光影的表现以及地形上的各种物理变化,都大大的提昇了. 授权:免费软件 大小:1.36G 语 ...
- 人大金仓删除字段_人大金仓数据库(kingbase7d)操作入门指南 Windows
1.1.12 安装成功,在开始菜单中可以看到以下数据库操作工具: 1.2 数据库卸载 1.2.1 选择 卸载 : 1.2.2 点击 卸载 : 1.2.3 选择 确定 ,开始数据库的卸载 : 1.2.4 ...
- Xpath在选择器中正确,在代码中返回的是空列表问题
Xpath在选择器中正确,在代码中返回的是空列表问题 一.问题: 在进行爬虫的时候我们会用到xpath解析html文件,但是会有一种情况就是在xpath选择器中可以使用,但是在代码中就无法使用的情况. ...
- 构建空列表的两种法是_Python 基础3之列表
今天列表专题的目录如下: 列表基础 1 创建列表 2 访问元素 3 添加元素 4 删除元素 5 list 与 in 6 list 与数字 7 列表生成式 列表进阶 8 其他常用API 9 列表实现栈 ...
最新文章
- QT5.3 + vs2012 + box2d环境配置
- CPU亲和性的使用与机制--含Xen中VCPU和PCPU的綁定方法
- Zero-shot Learning / One-shot Learning / Few-shot Learning
- Docker监控方案(TIG)的研究与实践之Influxdb
- Discretized Streams (DStreams)离散化流
- 【转】大话程序猿眼里的高并发
- solutions for 'No Suitable Driver Found For Jdbc'
- 创建基于存储过程的数据块
- .describe() python_Stataamp;Python | 分别实现多元线性回归
- vscode配置c++11
- ajax清除session,跳出iframe框架页面后跳转页面
- 2021 泰迪杯 C 思路
- firework软件linux下,Linux 下的网页三剑客 都是免费的啊 (*^__^*)
- pyqt QListView详细用法
- Mac pro 安装ubuntu系统
- 哪些因素决定了CRM客户管理系统的价格?
- 级联选择器实现省市区三级联动
- 工程测量的各种数据考点
- 利用Flowchart.fun快速可视化递归过程
- 高质量 Go 进阶图书,它来了
热门文章
- tensorflow学习笔记1:batch normalization 用法
- Leap手心发射线,碰撞点用小球表示,并用Line Renderer画出来
- Kinect + OpenNI + OpenCV + OpenGL 三维重建
- Atitit 登录账号管理法passport 目录 1. 总则	1 1.1. 身份分类登录账号 管理员 操作人员 普通用户	1 1.2. 安全考虑,必须单独分开的账号储存表,使用不同等加密技术与秘
- Atitit 小程序后端服务api艾提拉总结 目录 1. 服务端	1 1.1. 开放接口	1 1.1.1. 登录	1 1.1.2. 用户信息	1 1.1.3. 接口调用凭证	2 1.1.4. 数据分
- Atitit python3.0 3.3 3.5 3.6 新特性 Python2.7新特性1Python 3_x 新特性1python3.4新特性1python3.5新特性1值得关注的新特性1Pyth
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- PAIP.MYSQL SLEEP 连接太多解决
- Julia : SharedArrays与@async比快
- Julia : The Power Sum的算法