从零开始编写简易python爬虫:每日房价的获取

1、从零开始编写简易python爬虫:每日房价的获取

    本文主要是对eclipse、python3下如何做准备工作以编写一个简易的爬虫程序进行示例(本文将采用获取“天津市国土资源和房屋管理局政务门户”网站上的每日房价作为示例,仅做学习,如有侵权,请告知)。通过本文,您将了解到如何安装三方工具包、如何在myeclipse下配置python开发环境以及相关的参考资料等内容。

 

1.1 爬虫本质

    由于本篇文章目的仅是为了全流程操作,因此关于爬虫原理,请查看相关文章,如:http://baike.baidu.com/item/网络爬虫?fr=aladdin

 

1.2 必需环境

    以下是编写一个基本爬虫应该具备的一种环境。另外,本文基于win7系统进行实现。

python环境:

         python3.4.3(本文以32位版本示例)

         下载url:http://download.csdn.net/detail/smartcore/9760543

三方工具包:

         beautifulsoup4-4.4.1-py3-none-any.whl

         chardet-2.3.0-py2.py3-none-any.whl

         urllib3-1.12-py2.py3-none-any.whl

        下载url:http://download.csdn.net/detail/smartcore/9760547

eclipse环境:

         myeclipse10

         myeclipse10.7.1crack

        crack下载url:http://download.csdn.net/detail/smartcore/9760552

PyDev插件:

         PyDev2.8.2.zip

下载url:http://download.csdn.net/detail/smartcore/9760551

 

1.3 环境安装与配置

1.3.1 python安装配置

    关于python如何安装和配置,已经有无数优秀浅显的文章进行了示例(如:http://www.tuicool.com/articles/eiM3Er3/),这里仅做文字说明。

         以32位的python示例。

1、双击python-3.4.3.exe;

2、在Python 3.4.3 Setup |Select Destination Directory页面,保持默认,点击next;

3、在Python 3.4.3 Setup |Customize Python 3.4.3页面,保持默认,点击next;

4、然后进入Install Python3.4.3,等待python安装完成后,点击“Finish”。

5、环境变量设置。在点击“我的电脑”|“属性”|“高级系统设置”后,弹出的“系统属性”中选“高级”选项卡,然后选择“环境变量”;

6、在新弹出的“环境变量”对话框中,在“系统变量”下的path值中添加“;C:\Python34\;C:\Python34\Scripts;”,然后一路确定,完成环境变量的配置;

7、测试python命令。打开操作系统cmd,输入python回车后,将会出现如下信息:

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSCv.1600 32 bit (In

tel)] on win32

1.3.2 python三方工具包安装

使用pip install “工具包全路径”,完成三个工具包的安装。

 

1.3.3 myeclipse安装

mycelipse环境仅需下载后解压,配置好对应的jdk后即可使用。如某个下载链接:http://www.xitongzhijia.net/soft/63971.html?1450694984

可能需要crack,见相关的crack文件

 

1.3.4 PyDev安装

1、将PyDev 2.8.2.zip文件夹解压后生成一个文件夹:PyDev 2.8.2,将此文件夹连同其所有子文件复制到MyEclipse10的根目录下的dropins文件夹内。

2、在 MyEclipse 菜单栏中,选择Window > Preferences > Pydev > Interpreter – Python,在此配置 Python。单击 New,进入对话框。Interpreter Name可以随便命名,Interpreter Executable选择Python解释器C:\python34\python.exe。

3、点击OK后跳出一个有很多复选框的窗口,选择需要加入SYSTEM pythonpath的选项,点击Ok。最终如下图:

 

1.4 简易爬虫

    1、打开MyEclipse后,在菜单中,选择File|New|Others...,在弹出的对话框中的Wizards输入框中输入PyDev,选择“PyDev Project”后,点击Next,如下:

 

    2、进入PyDev Project设置页面后,进行如下设置,重点是选择Grammer Version版本为3.0:

 

    3、点击2中的Finish,完成工程创建。如下:


    4、在3中的PyDev Package Explorer视图中,右键单击PyCrawler,新建一个PyDevPackage包为com.zc.main(随意起的包名),然后在main包下新建一个文件main.py(需要注意的是main.py文件的格式应该为utf-8,如出错,见http://blog.csdn.net/ch7543658/article/details/44309853的解释)。

    5、在main.py文件内输入如下代码(本代码的主要功能是将“天津市国土资源和房屋管理局政务门户”网站上的每日房价信息爬到本地D盘根目录下的tjhouseprice.txt文件内):

# -*- coding:utf-8 -*-

# created @ 2016.04.18
# author : core
# modified @ ***

from bs4 import BeautifulSoup as BSoup
from urllib3.util.timeout import Timeout

import chardet
import re
import urllib
import urllib3
import uuid

g_strUrlRoot = "http://www2.tjfdc.gov.cn/Lists/List51/DispForm1.aspx?ID="

def downloadDoc(iPageStart = 1, iPageEnd = 1):
    """下载id=iPageStart 到id=iPageEnd 间的网页
    """
    
    headers = { #伪装为浏览器抓取  
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36',
        #'Accept-Language':'zh-CN',
        'Content-type':'text/html;charset=utf-8'
    }
    
    strUrlRoot = g_strUrlRoot
    strUrlPrefix = strUrlRoot
    
    objHttp = urllib3.PoolManager(timeout=Timeout(10))
    iIndex = iPageStart
    
    strRetFileName = "D:\\tjhouseprice.txt"
    with open(strRetFileName, 'a+', encoding="utf-8") as objFile:
        while iIndex <= iPageEnd:
            strUrl = strUrlPrefix + str(iIndex)
            strUrlReq = urllib.parse.quote(strUrl, ':?=/&')
            
            strTitle = ''
            strContext = ''
            try:
                objReq = objHttp.request('GET', strUrlReq, headers = headers)
                infoEncode = chardet.detect(objReq.data).get('encoding', 'utf-8')
                strHtml = objReq.data.decode(infoEncode, 'ignore')
                objSoup = BSoup(strHtml, 'html.parser')              
                
                #获取标题
                objTitleTable = objSoup.select('td.UserArticleHeader table')[0]
                strTitle= objTitleTable.find('td').text            
                strContext = strTitle + '\n'
                
                objTable = objSoup.select('table.MsoNormalTable')[0]
                
                rows = objTable.findAll('tr')
                for i in range(2, len(rows)):
                    row = rows[i]
                    cols = row.findAll('td')
                    for j in range(0, len(cols)):
                        col = cols[j]
                        objText = col.find('span').text
                        strContext += objText + '\t'
                    strContext += '\n'
                    
            except Exception as ex:
                iIndex = iIndex + 1
                print('except : ' + strUrl)
                continue
            
            objFile.write(strContext)
            objFile.flush()
            print(strTitle)
            
            iIndex = iIndex + 1

# 执行入口
downloadDoc(2001, 2002)


 

    6、运行测试。点击MyEclipse工具栏上的Run按钮的下三角箭头,在Run As菜单下选择“Python Run”后,程序开始运行,然后在D盘根目录下的tjhouseprice.txt文件内,可查看结果。

 

1.5 其他参考

 

    巨多的py工具包:http://www.lfd.uci.edu/~gohlke/pythonlibs/

    离线安装PyDev:http://www.cnblogs.com/hanc/p/3685847.html

    一整套的爬虫入门:http://python.jobbole.com/81332/

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值