前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11月7日python爬虫框架Scrapy基础知识

11月7日python爬虫框架Scrapy基础知识

作者头像
武军超
发布2019-02-25 15:13:26
3750
发布2019-02-25 15:13:26
举报

爬虫最好的方式: 下载一页匹配一页,以后可以使用多线程让抓取页面和存储到数据库分开进行

爬取动态网页的两种方式, 1.selenium模拟浏览器 2. 在F12的Network中抓包,使用json字符串

运行爬虫需要安装win23 :  pip install pypiwin32

爬虫名文件中的回调函数可以自定义 items文件中可以自定义items

创建爬虫项目和创建爬虫的命令如下: 以下命令中的<>在实际使用的时候不要带上 1.Scrapy创建爬虫项目的命令是: scrapy startproject <projectname>

2.Scrapy创建爬虫的命令是,在项目名称下执行:(最后那个是内置的crawl模板) scrapy genspider <爬虫名称> <目标域名> --template=crawl

3. 爬虫项目的运行命令是: win需要下载pywin32  pip install pypiwin32 scrapy crawl <爬虫名称>

创建完爬虫项目后会自动生成一个spider的文件夹,这个文件夹是用于存放爬虫的 items.py模块是用于自定义类型的,类型的内容是我们想要获取的一个对象的哪些字段 pipelines.py模块是用于把数据持久化的,数据是从爬虫模块的回调函数匹配完目标数据之后传过来的 setting.py模块是用于配置整个爬虫项目的

如果想要存储数据setting文件中的pipeline一定要启用

scrapy shell终端可用于测试xpath: 可以使用scrapy shell <网页地址> 测试xpth公式能否正确的提取数据(相当于直接进入scrapy框架中的回调函数测试xpath公式)

# 保存爬取数据到一个文件中: 进入爬虫的项目名下运行该命令,可以把匹配出的数据直接存到当前目录下的一个json文件中,并设置日志等级(可设可不设) scrapy crawl <爬虫名字> --output=countries.json -s LOG_LEVEL=INFO

日志level总共分5个级别:debug < info< warning< error< critical 

已经学了三个xpath: 1, 原生的xpath , 获取数据可以直接使用/text() 2. webdriver, 模拟浏览器使用的xpath, 只能定位到节点,获取节点数据必须使用 link.get_attribute('href')

3. scrapy中的xpath ,获取数据使用/text(), 但这是一个集成的后边必须加.extract()

爬虫项目一般在命令行运行,可以在项目文件中定义一个bat文件, 里面写上 项目运行的的开始命令,双击就可以直接运行了。

爬虫项目可以记录停止节点,方便下次继续爬取,方法是在开始运行项目的后边加一个属性JOBDIR scrapy crawl <爬虫名称>  -s LOG_LEVEL=INFO -s JOBDIR=craws/country

在setting文件中可以定义数据管道的优先级: 'test1.pipelines.Test1Pipeline': 300, 数越小优先级越高, 自定义的pipeline, 里面定义的函数必须是process_item

存文件可在管道模块中的存储数据类中定义一个开始和一个结束,整个爬虫过程只打开和关闭一次,减少IO操作

爬虫模块的回调函数可以自定义 pipelines模块中可以定义多个pipline类用于不同的存储功能, 比如一个存到文件一个存到数据库,或者是两个类存不同的数据

中间件: 自定义一个中间件,打开setting文件开启

网页直接复制的xpath有时是不准确的, 当拿不到想要的数据的时候,要从前往后一段标签一段标签地查看,看到底是到哪个标签找不到数据了,找到最后一个能打印出来的标签,查看标签内打印出来的其他的数据是不是想要获取的那个标签,然后适当的修改路径,scrapy中定义的想要爬取的路径越精确越好,以防爬取不需要的数据,当爬出不需要的数据时打开链接看一下,如果不是自己想要的数据链接,但是也包含在自己前面定义的想要爬取的路径中,那就说明自己定的路径范围太大了,修改Rule allow中的爬取路径,更精确就可以了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档