爬取数据用的是python2.6+scrapy爬虫框架,一开始我写的是一个全站爬虫,可以根据一个种子url爬取58同城所有房价信息,但有个问题就是必须使用代理IP,否则爬虫很快就会被封禁,于是我想了个办法就是在linux中每五分钟运行一次爬虫程序,每次只爬取一个城市的房价信息,代码如下
1.spiders
#encoding=utf-8
import sys
sys.path.append("..")
from scrapy.spiders import Spider
from lxml import html
import plug
from plug.utils import StringUtil,NumberUtil
from ershoufang.items import HouseItem
import re
import scrapy
import time
import pymongo
from scrapy.utils.project import get_project_settings
class erShouSpider(Spider):
name = "ershoufang"
allowed_domains = ["58.com"]
def __init__(self):
super(erShouSpider,self).__init__()
self.settings = get_project_settings()
self.client = pymongo.MongoClient(
self.settings['MONGO_IP'],
self.settings['MONGO_PORT'])
self.cities_db = self.client[self.settings['CITY_DB']]
self.cities_Col = self.cities_db[self.settings['CITY_COL']]
self.fillurl=""
self.cityhost=""
self.city=""
def get_specify_request(self):
#返回指定的请求
condition = {
"city":self.settings['CITY']}
if self.settings['PROVIENCE'] and self.settings['PROVIENCE']!="":
condition = {
"city":self.settings['CITY'],"provience":self.settings['PROVIENCE']}