python用scrapy爬取58同城的租房信息

上篇我们用了beautifulsoup4做了简易爬虫,本次我们用scrapy写爬虫58同城的租房信息,可以爬取下一页的信息直至最后一页。
1、scrapy的安装
这个安装网上教程比较多,也比较简单,就不说了。
2、创建scrapy项目
在控制台 输入命令 scrapy startproject 项目名
python用scrapy爬取58同城的租房信息_第1张图片

3、导入项目到编译器,我这里用的pyscram,并在spiders文件夹下面创建zufang.py文件
python用scrapy爬取58同城的租房信息_第2张图片

4、zufang.py的编辑
下面的租房信息是我们要爬取的python用scrapy爬取58同城的租房信息_第3张图片

在zufang.py写入以下代码,其中去除了空行和空格

import scrapy
class itemSpider(scrapy.Spider):
    # 爬虫名 启动爬虫时需要的参数*必需
    name = 'zufang'

    # 爬取域范围 允许爬虫在这个域名下进行爬取(可选)  可以不写
    # allowed_domains = ['itcast.cn']

    # 起始url列表  爬虫的第一批请求,将求这个列表里获取
    start_urls = ['https://hf.58.com/chuzu/?PGTID=0d100000-0034-561b-52aa-3b0813a79f76&ClickID=2']


    def parse(self, response):
        ul = response.xpath("//div[@class='des']//h2//a/text()")
        for data in ul:
                 a= data.extract()
                 b=str(a).strip()
                 if b is not None:
                    if b != '':
                     print(b)
                     item = {
     }
                     item['address']=b
                    yield  item
        next_url = response.xpath("//a[@class='next']/@href").extract_first()
        # print("下一页地址:"+next_url)
        if next_url !='':
               yield scrapy.Request(next_url,callback=self.parse)

5、在settings文件里面做如下设置
python用scrapy爬取58同城的租房信息_第4张图片
python用scrapy爬取58同城的租房信息_第5张图片
第一个注释,默认事true,改成false
第二个默认是注释的,打开就行

6、编写pipelines文件,把爬取的信息写道文件里面,代码如下:

  # 构造方法
    def __init__(self):
        self.fp = None  # 定义一个文件描述符属性

        # 重写父类的开始和结束方法
        # 开始爬虫时,执行一次

    def open_spider(self, spider):
        print('爬虫开始')
        self.fp = open('./data.txt', 'w')


    def process_item(self, item, spider):
        self.fp.write(item['address'] + "\n")
        return item

    #结束爬虫时,执行一次
    def close_spider(self,spider):
        self.fp.close()
        print('爬虫结束')

7、运行爬虫
命令:scrapy crawl zufang

8、结果
python用scrapy爬取58同城的租房信息_第6张图片
有3k条房源信息,我这里只获取了一个字段作为例子。

你可能感兴趣的:(爬虫,python)