scrapy爬虫_scrapy+xpath爬虫小项目

滑稽研究所 ffe8ef7c35af7ff6f8ace32a0cbc4520.png

scrapy+xpath爬虫小项目

哈喽,大家好呀,我是滑稽君。最近都在学习爬虫的知识,前不久接触到了scrapy这个第三方库,结合xpath一起使用,我感觉十分便利。本期我们通过爬取集号吧里手机靓号的信息,这样一个小项目来带领大家熟悉scrapy+xpath。

1989c37a8d6d4256d0f46e7406a0cae4.png

视频讲解:

主代码:

import scrapy#http://www.jihaoba.com/escrow/class PhoneSpider(scrapy.Spider):    name='phone'    start_urls=[        'http://www.jihaoba.com/escrow/'        ]def parse(self, response):for ul in response.xpath('//div[@]/ul'):            phone=ul.xpath('li[contains(@class,"number")]/a/@href').re("\\d{11}")[0]            price=ul.xpath('li[@]/span/text()').extract_first()[1:]            #这里我们统一一下爬取来的价格的格式。if price.endswith('万'):                price=int(float(price[:-1])*10000)else:                price=int(price)yield {"phone": phone,"price": price            }next="http://www.jihaoba.com"+response.xpath('//a[@]/@href').extract_first()yield scrapy.Request(next)'''“//”代表跳级匹配,“/”代表是直接的父子级关系。我们可以用“@”来匹配标签中元素的内容,如class、src、href等等需要的内容。更具体的内容请观看我们的视频讲解。“contains”代表匹配标签里只要有你指定的元素就会被匹配出来。若不用这个参数则元素和参数之间必须用“=”连接。一个是包含关系,一个是等于关系。'''

标签部分:

1867cf00fc957e9cfcdaed097d05c11e.png

我们可以看到信息都是在

标签中的。两个标签紧密相连就是直接的父子级标签,使用"/",非父子级标签匹配需要用"//".

这里我们贴出主代码部分,其实还有很多工作要完成。关于scrapy项目如何创建,工程文件的配置、如何创建子项目,xpath的使用方法、以及如何跳过控制台直接在项目代码中运行脚本的方法。滑稽君都在视频中有很详细的讲解。全部放在文章内会导致篇幅过长。

与平时使用爬虫一样,我们先导入url,然后找出我们想要爬取的信息在网页是什么位置,哪个标签里。xpath可以帮助我们提取标签里的内容。我们这里想要手机号和对应的价格,那我们就使用xpath去匹配它们。“//”代表跳级匹配,“/”代表是直接的父子级关系。我们可以用“@”来匹配标签中元素的内容,如class、src、href等等需要的内容。更具体的内容请观看我们的视频讲解。

“contains”代表匹配标签里只要有你指定的元素就会被匹配出来。若不用这个参数则元素和参数之间必须用“=”连接。一个是包含关系,一个是等于关系。

json文件中储存的号码信息:

24c9962e0ae511b7529b7a49f329fa9a.png

创建scrapy项目之后会产生的文件:

8f1d0fb3f4384dc9bba2a7653c0977cc.png

其中json文件是爬取的号码信息。run.py是我们添加的不通过命令行运行脚本的快捷方法。(视频中会教大家如何创建)不得不说面对这种,需要同时照顾好几个目录的文件时,pycharm左边显示的清晰的文件目录结构是真的棒。

本期素材来源:

https://space.bilibili.com/346139605/video
e7da3b289df9c9ac14cb2d8763d1b3aa.png ❂ END

 scrapy我们才刚刚入了门,需要学习的东西还很多,大家一起加油。

db883023849a968b59bbae1a41162937.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值