一、完整代码

bk.py

import jsonimport scrapyfrom ScrapyAdvanced.items import HouseItemclass BkSpider(scrapy.Spider):name = 'bk'allowed_domains = ['bj.ke.com']start_urls = ['https://bj.ke.com/ershoufang/']def parse(self, response):# house_list_position = response.xpath("//div[@class='address']/div/div/a/text()").extract()# # 存在脏数据  一个空的脏数据 一个 正常数据# house_list_info = response.xpath("//div[@class='address']/div[@class='houseInfo']/text()").extract()house_list_address = response.xpath("//div[@class='address']")house_list_titles = response.xpath("//div[@class='title']/a/text()").extract()for i in range(len(house_list_address)):title = house_list_titles[i]house = house_list_address[i]position = house.xpath("./div/div/a/text()").extract_first()info = "".join(house.xpath("./div[@class='houseInfo']/text()").extract()).replace("\n", "").replace(" ","")tags = ";".join(house.xpath("./div[@class='tag']/span/text()").extract())total_price = house.xpath("./div[@class='priceInfo']/div[@class='totalPrice']/span/text()").extract_first() + "万"unit_price = house.xpath("./div[@class='priceInfo']/div[@class='unitPrice']/span/text()").extract_first()house_item = HouseItem()house_item["title"] = titlehouse_item["position"] = positionhouse_item["info"] = infohouse_item["tags"] = tagshouse_item["total_price"] = total_pricehouse_item["unit_price"] = unit_priceyield house_itempage_info = json.loads(response.xpath("//div[@class='page-box house-lst-page-box']/@page-data").extract_first())page_url = response.xpath("//div[@class='page-box house-lst-page-box']/@page-url").extract_first()total_page = page_info.get("totalPage")current_page = page_info.get("curPage")# 当前页面不是总页面的时候, 也就是说 不是最后一页, 去请求下一页if current_page != total_page:url = page_url.replace("{page}", str(current_page+1) + "/")yield response.follow(url=url, callback=self.parse)# 当前页是第一页,发送请求后面所有的页# if current_page == 1:#     for i in range(2, total_page):#         url = page_url.replace("{page}", str(i))#         yield response.follow(url=url, callback=self.parse)

items.py

class HouseItem(scrapy.Item):title = scrapy.Field()position = scrapy.Field()info = scrapy.Field()tags = scrapy.Field()total_price = scrapy.Field()unit_price = scrapy.Field()

pipelines.py

class HousePipeline():def process_item(self, item, spider):if isinstance(item, HouseItem) and isinstance(spider, BkSpider):# 存储with open("house_list.csv", "a", encoding="utf-8") as house_file:csv_writer = csv.writer(house_file)row = [it[1] for it in item.items()]csv_writer.writerow(row)return item

Python网络爬虫--项目实战--scrapy爬取贝壳网相关推荐

  1. python网络爬虫--项目实战--scrapy爬取人人车(5)

    一.目标 爬取多页人人车的车辆信息 二.分析 2.1 网站分析 在网页源代码中可以搜索到页面中的数据,所以可以判断该页面为静态加载的 三.完整代码 renrenche.py import scrapy ...

  2. Python网络爬虫--项目实战--scrapy爬取人人车

    一.目标 爬取多页人人车的车辆信息 二.分析 2.1 网站分析 在网页源代码中可以搜索到页面中的数据,所以可以判断该页面为静态加载的 三.完整代码 renrenche.py import scrapy ...

  3. python 爬取贝壳网小区名称_Python爬虫实战:爬取贝壳网二手房40000条数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于啤酒就辣条 ,作者啤酒就辣条 一.网页分析 爬取贝壳网石家庄二 ...

  4. Python爬虫实战:爬取贝壳网二手房40000条数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于啤酒就辣条 ,作者啤酒就辣条 一.网页分析 爬取贝壳网石家庄二 ...

  5. Python网络爬虫:利用正则表达式爬取豆瓣电影top250排行前10页电影信息

    在学习了几个常用的爬取包方法后,转入爬取实战. 爬取豆瓣电影早已是练习爬取的常用方式了,网上各种代码也已经很多了,我可能现在还在做这个都太土了,不过没事,毕竟我也才刚入门-- 这次我还是利用正则表达式 ...

  6. Python网络爬虫requests、bs4爬取空姐图片,福利哦

    Scrapy框架很好,也提供了很多扩展点,可以自己编写中间件处理Scrapy的Request和Response.但是可定制化或者可掌控性来说,还是自己写的爬虫更加强一些. 接下来,我们来看一下使用Py ...

  7. 爬虫项目:scrapy爬取昵图网全站图片

    一.创建项目.spider,item以及配置setting 创建项目:scrapy startproject nitu 创建爬虫:scrapy genspider -t basic nituwang ...

  8. python网络爬虫之使用scrapy爬取图片

    在前面的章节中都介绍了scrapy如何爬取网页数据,今天介绍下如何爬取图片. 下载图片需要用到ImagesPipeline这个类,首先介绍下工作流程: 1 首先需要在一个爬虫中,获取到图片的url并存 ...

  9. Python网络爬虫项目实战(二)数据解析

    上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题.那么接下来我们就需要对已经爬取下来的网页进行解析,从中提取出我们想要的数据. 根据爬取下来的数据,我们需要写不同的解析方式,最常见的一般都是 ...

  10. Python网络爬虫(6)--爬取淘宝模特图片

    经过前面的一些基础学习,我们大致知道了如何爬取并解析一个网页中的信息,这里我们来做一个更有意思的事情,爬取MM图片并保存.网址为https://mm.taobao.com/json/request_t ...

最新文章

  1. JS中怎样获取当前年以及前后几年并构造成对象数组
  2. SAP CRM系统UI checkbox的设计与实现
  3. OData V4 系列 查询操作
  4. 【潜龙勿用】中国制造业数字化转型大潮下的冷思考
  5. (转)EF三种编程方式详细图文教程(C#+EF)之Database First
  6. 最终幻想13 公布发售日期和主题曲
  7. dev控件ASPxComboBox设置ReadOnly=true后
  8. Clojure 学习入门(13)- binding
  9. 4. 使用Keras-神经网络来进行MNIST手写数字分类
  10. Deecamp冬令营小记
  11. 13.0、veu-路由嵌套
  12. 【收山之作】我手上所有GALGAME 游戏资源封装工具下载
  13. shopex mysql索引_shopex数据库表结构说明文档.doc
  14. [luogu4234]最小差值生成树
  15. c语言英文数字变数字,[求助]阿拉伯数字变英文数字遇到的问题
  16. Python语音助手
  17. tensorflow中将标注文件写到train.txt, test.txt,trainval.txt中
  18. android长按呼出菜单,Android系统下长按菜单的实现方式
  19. 【RK PX30】 瑞芯微四核64位工业级芯片PX30[RK3358]安卓核心板
  20. oracle在Windows,linux备份恢复(tina)

热门文章

  1. 对圆柱面的曲面积分_圆柱体的对面积的曲面积分
  2. 我的回忆和有趣的故事 by李维(台湾)
  3. 最简单易懂最深刻的数据库讲解
  4. 天玑720可以升级鸿蒙系统吗,华为高管:来岁年初就能用上鸿蒙体系,55部华为产物可升级鸿蒙...
  5. 【Linux】循序渐进学运维-学习方法篇
  6. Python实现借助聚合数据API接口生成某一年的节假日对照表
  7. 如何用十步写一首原创歌曲
  8. No content to map to Object due to end of input
  9. omnet++ 中tictoc10-12学习笔记
  10. 串口发送字符控制灯亮灭