scrapy爬取爱上租网站的房源信息(一)

爬取的页面如下:爱上租的租房页面

需要爬取该页面下所有房间的基本信息

scrapy框架的安装和使用教程参考以下链接  http://www.scrapyd.cn/doc/178.html

首先在spiders目录下新建一个house_spider.py,将上面爬取页面的链接添加到start_urls中

此处可打印下看是否请求到页面

 def parse(self, response):
        print(response.body)

运行结果如下,即已经请求到页面

scrapy运行一般都是在终端下输入    scrapy crawl 项目名       运行,每次输入很是麻烦,提供一个方法,可以在项目目录下新建一个entrypoint.py文件,加上以下内容,“aishangzu”是爬虫名,在spider.py中设置的,每次运行entrypoint.py即可

from scrapy import cmdline

cmdline.execute(['scrapy', 'crawl', 'aishangzu'])

scrapy框架内部处理了对页面的解析,这也是该框架最方便的一个地方

接下来分析所要爬取的数据的标签,可以看到所需信息在class=“list-item”标签下第2个div的a标签下的span标签

使用xpath定位所需信息,由于要获取该页面下的所有房间信息,因此采用了循环遍历

def parse(self, response):
    summ = response.xpath('//div[@class="list-item"]')
    num = len(summ)
    for i in range(num):
        title =summ.xpath('//div[@class="listitem"]/div[2]/div[1]/a/span/text()').extract([i]    # 房名

地理位置、价格等其他信息同样可通过xpath来获取,相比BeautifulSoup速度快很多

上面仅获取了第一页的数据,还要获取多页的数据

找到下一页的链接

scrapy中提供了请求下一页的方法,同样需要使用xpath获取到链接

 next_page = response.xpath('//div[@class="pagination"]/a[last()]/@href').extract_first()     #获取下一页的链接
        if next_page is not None:
            next_page = response.urljoin(next_page)
            yield scrapy.Request(next_page, callback=self.parse)

这样,所有房源的基本信息都获取到了,接下来就是怎么把爬取的数据存到数据库中

请看下一节

猜你喜欢

转载自blog.csdn.net/qq_36135258/article/details/86297264