Python中使用Scrapy爬虫抓取上海链家房价信息
文章目录
- 前言
- 准备工作
- 创建一个新的Scrapy项目
- 定义一个爬虫Spider
- 导出抓取数据
- 保存数据到数据库(MongoDB)
前言
之前用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/LianjiaYou can start your first spider with:cd Lianjiascrapy 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 = queryself.base_url = "https://sh.lianjia.com"self.curr_page_no = 1self.curr_url = "{}/{}pg{}" .format(self.base_url, self.query, self.curr_page_no)self.last_url = Nonesuper().__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 itemself.curr_page_no += 1time.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爬虫抓取上海链家房价信息相关推荐
- 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源
我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...
- python爬虫requests源码链家_python爬虫——爬取链家房价信息(未完待续)
爬取链家房价信息(未完待续) items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # ...
- 爬取南京链家租房信息
爬取南京链家租房信息 代码如下 代码片. import requests from lxml import etree if name == "main": #设置一个通用URL模 ...
- 基于python的scrapy爬虫抓取京东商品信息
这是上的第二节爬虫课程的课后作业:抓取京东某类商品的信息,这里我选择了手机品类. 使用scrapy爬虫框架,需要编写和设置的文件主要有phone.py , pipelines.py , items.p ...
- Python实例:网络爬虫抓取豆瓣3万本书(1)
花了些时间看了Python一整本书,写了些小例子,因为是有经验的人自学,所以很多都是跳过的. 不过学习还是得在实践中去,学一门语言还得运用中去. 去下一些例子下来,去运行,调试时最好的了. <网 ...
- Scrapy爬虫抓取ZOL手机详情
前不久需要一批手机数据做测试,所以就爬取了ZOL上关于手机的各项参数,现在把代码分享出来,希望大家能够多提改进意见. ZOL手机信息 想要抓取ZOL关于手机的信息需要三个步骤: 手机商城列表页 -&g ...
- Python爬虫 抓取大数据岗位招聘信息(51job为例)
简单介绍一下爬虫原理.并给出 51job网站完整的爬虫方案. 爬虫基础知识 数据来源 网络爬虫的数据一般都来自服务器的响应结果,通常有html和json数据等,这两种数据也是网络爬虫的主要数据来源. ...
- python爬歌词_python爬虫抓取某易云音乐歌词,从此不在下载
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:企鹅号小编 ( 想要学习Python?Python学习 ...
- Python爬虫抓取去哪儿网景点信息告诉你国庆哪儿最堵
摘要 本文主要介绍了使用Python抓取去哪儿网站的景点信息并使用BeautifulSoup解析内容获取景点名称.票销售量.景点星级.热度等数据,然后使用xlrd.xlwt.xlutils等库来处理E ...
最新文章
- Java8中Stream流对集合操作
- mysql,int(5)、int(10)啥区别联系
- spark rdd map java_如何在spark RDD(JavaRDD)中获取记录的文件名
- CentOS 7 安装MySQL 5.6遇到问题及解决方案
- 转:mac下安装homebrew
- php基础教程 第三步 学习字符串及相关函数
- javascript学习系列(7):数组中的concat方法
- 药师帮完成1.33亿美元D轮融资,投资方为老虎环球基金、H Capital和DCM...
- nginx: [emerg] bind() to 0.0.0.0:66 failed (98: Address already in use)
- HQChart使用教程92-如何创建分笔明细表
- RDKit入门教程(1)——RDKit 安装 (Win10)
- 实用小技巧之电脑如何滚动截屏/截取长图
- W3Cschool从零开始学C语言笔记(1-2)位、字节及排列组合
- 怎么样向云服务器上传文件_向云服务器上传文件以及移动到指定文件夹
- css内边距属性、外边距属性
- 佛学研究:人生本相的体察
- 台式计算机经常使用的硬盘是什么尺寸,台式机固态硬盘多大合适
- 米洛个人修炼术:如何倍增你的功力修行速度达成健康体魄
- IDEA 启动子项目报错 Error running 'XXXApplication': No jdk for module 'XXX'
- 操作系统笔记 Unite4