题外话:这几天用python做题,算是有头有尾地完成了。这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考。我python的实战经历不多,所以代码也是简单易懂的那种。当然过程中还是遇到了一些问题,也会向大家提供我的解决方案。

用python爬取链家网的二手房信息,我主要用到了bs4中的BeautifulSoup。所以首先我们需要在cmd中输入“pip install beautifulsoup”安装——pip的安装自己搜博客哦。另外我还推荐使用Anaconda2(64位),遇到需要自己设路径的安装库时,可以直接在这个软件内安装你需要的库类。这两种方法比较简单方便。

一、import导入库from bs4 import BeautifulSoup

import urllib2

import time

第一个库是用来从HTML中提取数据(HTML/XML的解析器);第二个库是需要其中的urlopen,用来打开url;第三个库是用来延时的,以防访问过快被封IP。

二、准备工作time.clock()

address = []

flood = []

follow = []

price = []

为程序加入计时器;还有四个空列表,用来放从网页上提取得到的相关信息。adress是房源地址信息;flood是房子的样式;follow是有多少人关注;price是房价。

三、解析网址

假设我们需要爬去杭州萧山区的二手房信息,我们看到一共有二十五页,而每页的网址知识改变了最后的“/pg2”里的数字页码。我们可以这样做:for i in range(1,26):

url = 'https://hz.lianjia.com/ershoufang/xiaoshan/pg'+str(i)+'/'

page = urllib2.urlopen(url)

soup = BeautifulSoup(page)

在for循环中,我们用range(1,26),从第一页至第二十五页,注意range的范围是左闭右合;然后用urllib2.urlopen(url)打开网址,创建beautifulsoup对象。

同样在这个大for循环下,加入下面的代码:for link in soup.find_all('div','address'):

context = link.get_text()

address.append(context)

# for i in address:

#    print address[0]

以前做的时候使用soup.select做的,这次发现用find_all更简单。我们找到div标签下,样式是address的信息;然后用get_text去掉其中的代码部分,选取文本信息;再将文本信息添加至address列表中。

这里需要用到网页的相关知识,我简单介绍一下:网页由HTML(网页结构)、CSS(网页样式)和JavaScript(网页功能)构成。在网页中,我们在某个网页标签(比如将鼠标放在“一室一厅”上)上右击选择“检查”,就可以定位到这个文本在网页代码中的位置。

在下图中,我们可以看到选中右边的title时,左边的黑色圈出来部分被阴影提示。在这里我们会发现我们所需要的文本信息都是放在

……

区域内的;并在“class=样式”下进行内容填充。

网页解析

由此,我们将大for循环写完整,如下:

大for循环下的全部内容

这里我突然发现我的延时并没有用上…写得太匆忙了…只是起到了一个计数的作用。最后那个“print '当前正在抓取第'+str(i)+'页'”是为了方便跑程序的时候看进度,不然未知的等待很浪费时间。

这里之后我还会学习一下用Xpath和正则表达式来做,毕竟是python必学内容。

四、构建数据表,进行信息整合

需要把以上四个房源信息合并到一个数据表中。

用pandas创建数据表

因为得到的每列数据中含有多种讯息,所以我们需要将其进行分列操作。

数据分列操作

这里我觉得代码还是比较容易读的;着重说一下上图中圈出来的红色。如果不加会报错“…6 columns,passed…7columns…”,大概是这样。看报错后的定位大概可以了解到,是因为依据“|”进行分列,可以分为7列,但我只给了六个分列后的标签,所以报错了。

分析最后得到的数据表,也不难发现是因为某些区内的某些别墅类房源的多标签导致的。

最后我们再将这些分列好的数据进行整表:

分列信息进行整表

由于我是做题需要,太多标签行对我来说没有什么意义,所以除了删除未分列前的行,我还删除了有无电梯等列信息。house.drop()里的axis的值可选0或1,表示行或列。

五、保存爬取结果

这样,我们的网页爬取就结束了。接下来是保存成csv结构;建议数据操作时还是以表格形式处理(如果是用excel处理的话),不然保存后只会留下最后一张表…还好我是一边做一边截图放文档里的。

保存成.csv格式

这里需要注意的就是encoding一定要写GBK,utf-8、gbk(xxx)都会导致csv文件中中文乱码问题。

最后依据print是为了和网页上的总房源信息做一个比较,确认爬虫爬完了所有数据。另外温馨提示,这些爬取下来的数据是有重复的,也就是网页有同一条房源信息多次推送罗列的行为。

以上,记录完毕。

python 爬取链家数据_用python爬取链家网的二手房信息相关推荐

  1. python爬取网页实时数据_使用 Python 爬取网页数据

    1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 ...

  2. python 循环定时器 timer显示数据_【Python】多线程、定时循环爬取优信二手车信息...

    爬虫 爬取优信二手车:循环遍历每页,获取相应的有价值字段信息,这里不详细阐释了. 多线程 Python中,使用concurrent.futures模块下的ThreadPoolExecutor类来实现线 ...

  3. python爬取京东手机数据_用scrapy爬取京东的数据

    本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中. 一.项目介绍 主要目标 1.使用scrapy爬取京东上所有的手机数据 2.将爬取的数据存储到MongoDB 环境 ...

  4. python向excel隔行写数据_【Python】将每日新增数据写入Excel

    一.背景: 因为自己从网上获取了一些金融数据,也没有配置数据库,所以目前暂时是将数据以增量的形式存储在自己的OneDrive上. 二.代码演绎:导入相关数据包 import pandas as pd ...

  5. 基于python的爬虫系统金融数据_基于Python的互联网金融数据采集

    基于Python的互联网金融数据采集 □文/王 蕾1安英博1刘佳杰2 [提要] 互联网金融数据中潜藏着未知的知识价值,但也存在着巨量的数据冗余.通过Python可以进行互联网金融数据的获取.解析.提取 ...

  6. python爬知识星球付费数据_用python爬取知识星球

    去年我们做过一个叫「学长问答」的社群活动,里面沉淀了大量有价值的互动信息,后来因为各种原因终止了.今天和涂腾聊起来,觉得这些信息就这么沉寂了太浪费.所以就试着用python爬取了知识星球的内容. 这个 ...

  7. python爬取电脑本地数据_利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息...

    原标题:利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息 新型肺炎肆虐全国,可以预知,最近一两年地理学中会有一部分论文研究新型肺炎的空间分布及与其他指标的关联分析.获取其患病人 ...

  8. python爬取b站数据_使用Python爬取B站全站视频信息

    B站我想大家都熟悉吧,其实 B 站的爬虫网上一搜一大堆.不过纸上得来终觉浅,绝知此事要躬行,我码故我在.最终爬取到数据总量为 760万条. 准备工作 首先打开 B 站,随便在首页找一个视频点击进去.常 ...

  9. python从文件中读取数据_使用Python脚本从文件读取数据代码实例

    这篇文章主要介绍了使用Python脚本从文件读取数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近自学Python的进度比较慢,工作之 ...

最新文章

  1. Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案
  2. python3 多进程锁
  3. 3.1.6 基本分页存储管理的基本概念
  4. 关于pycharm deployment消失的问题
  5. div内容居中和布局居中样式总结
  6. STL之set_union、set_intersection、set_difference、set_symmetric_difference
  7. AndroidStudio_A connection was leaked. Did you forget to close a response body?---Android原生开发工作笔记241
  8. C语言 后面,c语言++放在前面和后面的区别分析
  9. 第三堂:Java程序流程控制
  10. /proc/cpuinfo文件分析(查看CPU信息)
  11. 12个职场信条让你的工作不可替代
  12. 使用Windows中的字体生成点阵字库
  13. 运用spss modeler运用支持向量机_使用支持向量回归进行Facebook股票预测
  14. linux运维工作内容及岗位要求
  15. SSD算法的改进版之R-SSD
  16. final 变量可以修改
  17. 由Maleimide参与的Biotin-C5-Mal试剂具有荧光猝灭能力
  18. 水星UD6S网卡Linux驱动,水星UD6S驱动|水星UD6S无线网卡驱动下载 v1.0 官方版 - 比克尔下载...
  19. 计算机教育格言,信息技术教师教育格言
  20. position:fixed实现相对于父级定位

热门文章

  1. shiro整合springboot,配置mybatis和增加邮箱验证码登录
  2. 你的Mac慢了怎么办?
  3. 关于QQ音乐的音乐下载
  4. 【Swtich大气层】xci文件转换成nsp文件的方式
  5. Google Earth Engine APP——MODIS海洋表明温度chart图简单工具
  6. 什么是编译器?解释器又是什么?
  7. 硬件损伤下beamforming优化中的矩阵推导
  8. 产品如何拒绝不靠谱不合理的提需
  9. 红海云薪酬管理系统可以解决的算薪问题有哪些?
  10. Unity-3D捕鱼达人小游戏开发 —— 起因和开始的设置以及准备工作