首页 > 编程知识 正文

爬虫项目实战,python为什么叫爬虫

时间:2023-05-05 10:53:36 阅读:175618 作者:3530

Scrapy入门使用scrapy2. scrapy项目开发流程安装3 .创建项目4 .创建爬虫5.1修改爬虫5.1修改爬虫. py文件5.2修改元素和数据、提取属性值的方法5.3响应对象

学习目标:

scrapy安装APP创建scrapy的项目APP创建scrapy爬行动物APP执行scrapy爬行动物APP如何定位scrapy并提取数据或属性值掌握响应对象的一般属性1.scrapy命令:实例

sudo apt-get install scrapy

或:

pip/pip 3安装脚本

2. scrapy项目开发进程拟订项目:

scrapy startproject mySpider生成了爬虫类:

scrapy genspider baidu baidu.com提取数据:

基于网站结构在spider上实现数据收集相关内容保存数据:

使用pipeline进行数据的后续处理和保存3 .创建项目并用命令生成scrapy项目的文件。 后续步骤均在项目文件中进行相关操作。 以下内容抓取传智教师库学习scrapy入门使用: http://www.itcast.cn/channel/tth anel

scrapy用于创建项目的命令:

scrapy startproject项目名称

例如:

scrapy startproject myspider

生成的目录和文件的结果如下:

4 .使用“创建爬行动物”命令创建爬行动物文件。 爬虫文件是主要的代码工作文件,通常在爬虫文件中创建单个站点的爬网行为。

命令:

在项目路径下执行:

scrapy genspider爬行动物的名字可以攀登的域名

爬虫名字:作为爬行动物运行时的参数

允许爬取的域名:是为爬行动物设置的攀登范围,用于过滤设置后要攀登的url,如果攀登的url与允许的域不相通,则会进行过滤。

例如:

cdmyspiderscrapygenspiderbaidubaidu.com生成的目录和文件的结果如下:

5 .在爬虫前一步生成的爬虫文件中完善指定站点的数据采集操作,实现数据提取

5.1爬虫. py文件修改/my spider/my spider/spiders/Baidu.py中的修改内容如下:

importscrapyclassitcastspider (scrapy.spider ) : # ) scrapy.spider#爬行动物名称name='baidu' #的允许范围allowed_domains=[ 开始登录的url地址start _ URLs=[ ' http://www.Baidu.cn/channel/teacher.shtml ' ] #数据提取的方法是下载中间件后发送过来的responsonse scrapy的响应对象可以直接执行XPathnames=response.XPath ()/div (@ class=' tea _ con ' )/Li/div/H3 Li ) ) for li in li_list: #创建数据字典item={} #,然后用extract (或extract_first ) )生成结果item['name']=Li.XPath

li.xpath('.//p/text()').extract_first() # 老师的介绍 print(item)

注意:

scrapy.Spider爬虫类中必须有名为parse的解析如果网站结构层次比较复杂,也可以自定义其他解析函数在解析函数中提取的url地址如果要发送请求,则必须属于allowed_domains范围内,但是start_urls中的url地址不受这个限制,我们会在后续的课程中学习如何在解析函数中构造发送请求启动爬虫的时候注意启动的位置,是在项目路径下启动parse()函数中使用yield返回数据,注意:解析函数中的yield能够传递的对象只能是:BaseItem, Request, dict, None 5.2 定位元素以及提取数据、属性值的方法

解析并获取scrapy爬虫中的数据: 利用xpath规则字符串进行定位和提取

response.xpath方法的返回结果是一个类似list的类型,其中包含的是selector对象,操作和列表一样,但是有一些额外的方法额外方法extract():返回一个包含有字符串的列表额外方法extract_first():返回列表中的第一个字符串,列表为空没有返回None 5.3 response响应对象的常用属性 response.url:当前响应的url地址response.request.url:当前响应对应的请求的url地址response.headers:响应头response.requests.headers:当前响应的请求头response.body:响应体,也就是html代码,byte类型response.status:响应状态码 6. 保存数据

利用管道pipeline来处理(保存)数据

6.1 在pipelines.py文件中定义对数据的操作 定义一个管道类
重写管道类的process_item方法process_item方法处理完item之后必须返回给引擎 import jsonclass ItcastPipeline(): # 爬虫文件中提取数据的方法每yield一次item,就会运行一次 # 该方法为固定名称函数 def process_item(self, item, spider): print(item) return item 6.2 在settings.py配置启用管道 ITEM_PIPELINES = { 'myspider.pipelines.ItcastPipeline': 400}

配置项中键为使用的管道类,管道类使用.进行分割,第一个为项目目录,第二个为文件,第三个为定义的管道类。

配置项中值为管道的使用顺序,设置的数值约小越优先执行,该值一般设置为1000以内。

7. 运行scrapy

命令:在项目目录下执行scrapy crawl <爬虫名字>

示例:scrapy crawl baidu

8. 小结 scrapy的安装:pip install scrapy创建scrapy的项目: scrapy startproject myspider创建scrapy爬虫:在项目目录下执行 scrapy genspider baidu baidu.com运行scrapy爬虫:在项目目录下执行 scrapy crawl baidu解析并获取scrapy爬虫中的数据: response.xpath方法的返回结果是一个类似list的类型,其中包含的是selector对象,操作和列表一样,但是有一些额外的方法extract() 返回一个包含有字符串的列表extract_first() 返回列表中的第一个字符串,列表为空没有返回None scrapy管道的基本使用: 完善pipelines.py中的process_item函数在settings.py中设置开启pipeline response响应对象的常用属性 response.url:当前响应的url地址response.request.url:当前响应对应的请求的url地址response.headers:响应头response.requests.headers:当前响应的请求头response.body:响应体,也就是html代码,byte类型response.status:响应状态码

加油!

感谢!

努力!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。