![ffe8ef7c35af7ff6f8ace32a0cbc4520.png](https://i-blog.csdnimg.cn/blog_migrate/f0413fd0163baac8190d0f9ef963eb9b.jpeg)
scrapy+xpath爬虫小项目
哈喽,大家好呀,我是滑稽君。最近都在学习爬虫的知识,前不久接触到了scrapy这个第三方库,结合xpath一起使用,我感觉十分便利。本期我们通过爬取集号吧里手机靓号的信息,这样一个小项目来带领大家熟悉scrapy+xpath。
![1989c37a8d6d4256d0f46e7406a0cae4.png](https://i-blog.csdnimg.cn/blog_migrate/5a910668e043a216008df89bf0e0a4eb.jpeg)
视频讲解:
主代码:
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”代表匹配标签里只要有你指定的元素就会被匹配出来。若不用这个参数则元素和参数之间必须用“=”连接。一个是包含关系,一个是等于关系。'''
标签部分:
我们可以看到信息都是在
这里我们贴出主代码部分,其实还有很多工作要完成。关于scrapy项目如何创建,工程文件的配置、如何创建子项目,xpath的使用方法、以及如何跳过控制台直接在项目代码中运行脚本的方法。滑稽君都在视频中有很详细的讲解。全部放在文章内会导致篇幅过长。
与平时使用爬虫一样,我们先导入url,然后找出我们想要爬取的信息在网页是什么位置,哪个标签里。xpath可以帮助我们提取标签里的内容。我们这里想要手机号和对应的价格,那我们就使用xpath去匹配它们。“//”代表跳级匹配,“/”代表是直接的父子级关系。我们可以用“@”来匹配标签中元素的内容,如class、src、href等等需要的内容。更具体的内容请观看我们的视频讲解。
“contains”代表匹配标签里只要有你指定的元素就会被匹配出来。若不用这个参数则元素和参数之间必须用“=”连接。一个是包含关系,一个是等于关系。
json文件中储存的号码信息:
创建scrapy项目之后会产生的文件:
其中json文件是爬取的号码信息。run.py是我们添加的不通过命令行运行脚本的快捷方法。(视频中会教大家如何创建)不得不说面对这种,需要同时照顾好几个目录的文件时,pycharm左边显示的清晰的文件目录结构是真的棒。
本期素材来源:
https://space.bilibili.com/346139605/video
![e7da3b289df9c9ac14cb2d8763d1b3aa.png](https://i-blog.csdnimg.cn/blog_migrate/18508d0c85afa8ef2f52e0a8793f005f.jpeg)
scrapy我们才刚刚入了门,需要学习的东西还很多,大家一起加油。
![db883023849a968b59bbae1a41162937.png](https://i-blog.csdnimg.cn/blog_migrate/8a766c525e0b1b98728cb52bd9156511.png)