Python中使用Scrapy爬虫抓取上海链家房价信息
2020-01-13 21:42
459 查看
文章目录
前言
之前用python写了一个简单的爬虫项目用来抓取上海链家上的一些房价信息,整理了下代码,特此记录
准备工作
- 安装Scrapy
创建一个新的Scrapy项目
例如,我们可以使用指令 scrapy startproject Lianjia
创建一个名为Lianjia的scrapy项目
$ scrapy startproject Lianjia New Scrapy project 'Lianjia', using template directory '/usr/local/anaconda3/lib/python3.6/site-packages/scrapy/templates/project', created in: /Users/lestat/PyProjects/Lianjia You can start your first spider with: cd Lianjia scrapy genspider example example.com
运行完该指令后,scrapy会为该项目创建Lianjia文件及相关文件,Lianjia文件夹下的目录结构如下:
. ├── Lianjia # Python模块,所有的代码都放这里面 │ ├── __init__.py │ ├── __pycache__ │ ├── items.py # Item定义文件 │ ├── middlewares.py │ ├── pipelines.py # pipelines定义文件 │ ├── settings.py # 配置文件 │ └── spiders # 所有爬虫spider都放这个文件夹下面 │ ├── __init__.py │ └── __pycache__ └── scrapy.cfg # 部署配置文件 4 directories, 7 files
定义一个爬虫Spider
以下是一个可以抓取需要的链家搜索结果页面信息的spider
# Lianjia/Lianjia/spiders/summ_info.py # -*- coding: utf-8 -*- import scrapy import time, sys #scrapy runspider spiders/summ_info.py -a query=ershoufang/ie2y4l2l3a3a4p5 -o ./data/result4.csv class LianjiaSpider(scrapy.Spider): name = "fetchSummInfo" allowed_domains = ['sh.lianjia.com'] headers = { 'user-agent':"Mozilla/5.0"} query_prefix = "li143685059s100021904/ie2y4l2l3a3a4p5" query_prefix2 = "ershoufang/huangpu/ie2y4l2l3a3a4p5" def __init__(self, query='', **kwargs): self.query = query self.base_url = "https://sh.lianjia.com" self.curr_page_no = 1 self.curr_url = "{}/{}pg{}" .format(self.base_url, self.query, self.curr_page_no) self.last_url = None super().__init__(**kwargs) def start_requests(self): urls = [ self.curr_url ] for url in urls: yield scrapy.Request(url=url, callback=self.parse, headers=self.headers) def parse(self, response): houseList = response.xpath('//ul[@class="sellListContent"]/li') if len(houseList) == 0: sys.exit() #['title','houseInfo1','houseInfo2','positionInfo1','positionInfo2','followInfo','totalPrice','unitPrice'] for house in houseList: item = { 'title': house.xpath('.//div[@class="title"]/a/text()').extract(), 'houseInfo1': house.xpath('.//div[@class="houseInfo"]/a/text()').extract(), 'houseInfo2': house.xpath('.//div[@class="houseInfo"]/text()').extract(), 'positionInfo1': house.xpath('.//div[@class="positionInfo"]/a/text()').extract(), 'positionInfo2': house.xpath('.//div[@class="positionInfo"]/text()').extract(), 'followInfo': house.xpath('.//div[@class="followInfo"]/text()').extract(), 'totalPrice': house.xpath('.//div[@class="totalPrice"]/span/text()').extract(), 'unitPrice': house.xpath('.//div[@class="unitPrice"]/@data-price').extract() } yield item self.curr_page_no += 1 time.sleep(30) curr_url = "{}/{}pg{}/" .format(self.base_url, self.query, self.curr_page_no) yield scrapy.Request(url=curr_url, callback=self.parse, headers=self.headers)
导出抓取数据
简单地,我们可以用 -o
选项保存爬虫的抓取结果,如下
$ scrapy runspider spiders/summ_info.py -a query=ershoufang/ie2y4l2l3a3a4p5 -o ./data/result.csv
结果如下:
head ./data/result.csv
保存数据到数据库(MongoDB)
[TO-DO]
转载于:https://www.cnblogs.com/lestatzhang/p/10611316.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Python中使用Scrapy爬虫抓取上海链家房价信息
- python3 简单爬虫实战|使用selenium来模拟浏览器抓取选股宝网站信息里面的股票
- Python爬虫三:抓取链家已成交二手房信息(58W数据)
- windows下使用python的scrapy爬虫框架,爬取个人博客文章内容信息
- python爬虫学习-scrapy爬取链家房源信息并存储(翻页)
- [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) —— 编写一个基本的 Spider 爬取微博用户信息
- Python爬虫框架Scrapy实战之批量抓取招聘信息
- python爬虫——爬取链家房价信息(未完待续)
- Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息
- Python爬虫实战一之使用Beautiful Soup抓取百度招聘信息并存储excel文件
- 使用python爬取链家上海二手房信息的案例
- Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息
- python3爬虫抓取链家上海租房信息
- Python使用scrapy抓取网站sitemap信息的方法
- Python爬虫框架Scrapy实战之批量抓取招聘信息
- 网络爬虫:使用Scrapy框架编写一个抓取书籍信息的爬虫服务
- 【python爬虫02】使用Scrapy框架爬取拉勾网招聘信息
- [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) —— 数据的持久化——使用MongoDB存储爬取的数据
- python爬虫 使用selenium抓取 猫眼电影网站排名页 电影信息
- Python开发网络爬虫抓取某同城房价信息