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/