专栏首页武军超python专栏11月7日python爬虫框架Scrapy基础知识

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

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

爬取动态网页的两种方式, 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中的爬取路径,更精确就可以了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SQL注入和XSS攻击

    SQL注入: 所谓SQL注入,就是通过把SQL命令插入到提交的Web表单或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,导致数据库中...

    武军超
  • python中property装饰器,迭代器,生成器,http请求中的post和put的区别,URL和URI, RESTfulAPI

    python property() 函数: @property装饰器就是负责把一个方法变成属性来进行调用的结构,实现既可以检查参数,又可以以点的形式进行调用类...

    武军超
  • 2018年8月16日TCP中三次握手和四次挥手详解

     上图中有几个字段需要重点介绍下:         (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。...

    武军超
  • Python爬虫学前普及

    恩,准备进入正题了!最近一段时间没有怎么更新公众号,主要就是在做爬虫教程的一些准备工作,看看爬虫需要用到那些技术,然后做个计划出来,确定一下学习课程中缝,这不今...

    叫我龙总
  • 反击爬虫,前端工程师的脑洞可以有多大?

    1. 前言 对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它。 而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网...

    IMWeb前端团队
  • 常见的反爬虫技术有哪些?如何防止别人爬自己的网站?

    爬虫与反爬虫是互联网开发工程师之间的斗智斗勇。作为网站开发者既要掌握爬虫的技术,还要更进一步去了解如何实现反爬虫。

    用户2781897
  • Python爬虫之爬虫概述

    网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(主要指浏览器)发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。

    海仔
  • 【程序源代码】python爬虫

    多种电商商品数据爬虫,整理收集爬虫练习。每个项目都是成员写的。通过实战项目练习解决一般爬虫中遇到的问题。通过每个项目的 readme,了解爬取过程分析。对于精通...

    程序源代码
  • 反击爬虫,前端工程师的脑洞可以有多大?

    对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它。 而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,...

    IMWeb前端团队
  • 推荐一条高效的Python爬虫学习路径!

    如果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,...

    python学习教程

扫码关注云+社区

领取腾讯云代金券