文章目录

  • 前言
  • 准备工作
  • 创建一个新的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爬虫抓取上海链家房价信息相关推荐

  1. 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源

    我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...

  2. python爬虫requests源码链家_python爬虫——爬取链家房价信息(未完待续)

    爬取链家房价信息(未完待续) items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # ...

  3. 爬取南京链家租房信息

    爬取南京链家租房信息 代码如下 代码片. import requests from lxml import etree if name == "main": #设置一个通用URL模 ...

  4. 基于python的scrapy爬虫抓取京东商品信息

    这是上的第二节爬虫课程的课后作业:抓取京东某类商品的信息,这里我选择了手机品类. 使用scrapy爬虫框架,需要编写和设置的文件主要有phone.py , pipelines.py , items.p ...

  5. Python实例:网络爬虫抓取豆瓣3万本书(1)

    花了些时间看了Python一整本书,写了些小例子,因为是有经验的人自学,所以很多都是跳过的. 不过学习还是得在实践中去,学一门语言还得运用中去. 去下一些例子下来,去运行,调试时最好的了. <网 ...

  6. Scrapy爬虫抓取ZOL手机详情

    前不久需要一批手机数据做测试,所以就爬取了ZOL上关于手机的各项参数,现在把代码分享出来,希望大家能够多提改进意见. ZOL手机信息 想要抓取ZOL关于手机的信息需要三个步骤: 手机商城列表页 -&g ...

  7. Python爬虫 抓取大数据岗位招聘信息(51job为例)

    简单介绍一下爬虫原理.并给出 51job网站完整的爬虫方案. 爬虫基础知识 数据来源 网络爬虫的数据一般都来自服务器的响应结果,通常有html和json数据等,这两种数据也是网络爬虫的主要数据来源. ...

  8. python爬歌词_python爬虫抓取某易云音乐歌词,从此不在下载

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:企鹅号小编 ( 想要学习Python?Python学习 ...

  9. Python爬虫抓取去哪儿网景点信息告诉你国庆哪儿最堵

    摘要 本文主要介绍了使用Python抓取去哪儿网站的景点信息并使用BeautifulSoup解析内容获取景点名称.票销售量.景点星级.热度等数据,然后使用xlrd.xlwt.xlutils等库来处理E ...

最新文章

  1. Java8中Stream流对集合操作
  2. mysql,int(5)、int(10)啥区别联系
  3. spark rdd map java_如何在spark RDD(JavaRDD)中获取记录的文件名
  4. CentOS 7 安装MySQL 5.6遇到问题及解决方案
  5. 转:mac下安装homebrew
  6. php基础教程 第三步 学习字符串及相关函数
  7. javascript学习系列(7):数组中的concat方法
  8. 药师帮完成1.33亿美元D轮融资,投资方为老虎环球基金、H Capital和DCM...
  9. nginx: [emerg] bind() to 0.0.0.0:66 failed (98: Address already in use)
  10. HQChart使用教程92-如何创建分笔明细表
  11. RDKit入门教程(1)——RDKit 安装 (Win10)
  12. 实用小技巧之电脑如何滚动截屏/截取长图
  13. W3Cschool从零开始学C语言笔记(1-2)位、字节及排列组合
  14. 怎么样向云服务器上传文件_向云服务器上传文件以及移动到指定文件夹
  15. css内边距属性、外边距属性
  16. 佛学研究:人生本相的体察
  17. 台式计算机经常使用的硬盘是什么尺寸,台式机固态硬盘多大合适
  18. 米洛个人修炼术:如何倍增你的功力修行速度达成健康体魄
  19. IDEA 启动子项目报错 Error running 'XXXApplication': No jdk for module 'XXX'
  20. 操作系统笔记 Unite4

热门文章

  1. 数据库基础-储存过程和触发器
  2. python结合ogr2ogr之地理数据格式转换-2
  3. eBPF 是用来干什么的?
  4. 腾讯面试题: 百度搜索为什么那么快?
  5. 企业微信会员销售额达40%的资生堂,能带给我们怎样的数字化增长启示?
  6. 到Nexus私服的发包实践
  7. 网页打不开的时候怎么办
  8. java对接支付宝支付(手机网站支付)
  9. SSL数字证书需要独立IP吗?
  10. 不狠狠逼一下自己,永远不知道自己有多么强大