• 大小: 6KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Python
  • 标签: Python爬虫  

资源简介

获取58同城租房信息,同时破解字体加密,使用python3.7开发

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import linkExtractor
from scrapy.spiders import CrawlSpider Rule
from rentHouse.items import RenthouseItem
import re
from fontTools.ttLib import TTFont
import base64
from io import BytesIO

class ZhuFangSpider(CrawlSpider):
    name = ‘zhu_fang‘
    allowed_domains = [‘wh.58.com‘]
    start_urls = [‘https://wh.58.com/zufang/‘]

    rules = (
        Rule(linkExtractor(allow=r‘zufang/pn\d+/‘) follow=True)
        Rule(linkExtractor(allow=r‘zufang/\d+x\.shtml‘) callback=‘parse_item‘)
    )


    def parse_item(self response):

        result = re.findall(r“base64\(.*?)‘\)“ response.body_as_unicode() re.S)

        # 租金
        rent_money = self.get_rent_money(responseresult)
        # 押金
        ya_jin = self.get_ya_jin(response)
        # 租赁方式
        rent_way = self.get_rent_way(response)
        # 房屋类型
        house_style = self.get_house_style(responseresult)
        # 房屋朝向
        house_toward = self.get_house_toward(response)
        # 房屋楼层
        house_foor = self.get_house_foor(responseresult)
        # 小区
        xiao_qu = self.get_xiao_qu(response)
        # 区域
        house_area = self.get_house_area(response)
        # 详细区域
        detail_area = self.get_detail_area(response)
        # 链接
        url = response.url

        item = RenthouseItem(rent_money = rent_moneyya_jin = ya_jinrent_way = rent_wayhouse_style = house_style house_toward = house_toward
                            house_foor = house_foorxiao_qu = xiao_quhouse_area = house_areadetail_area = detail_areaurl = url)

        yield item

    def get_rent_money(selfresponseresult):
        rent_money = response.xpath(‘//b[@class=“f36 strongbox“]/text()‘).extract()
        if len(rent_money) == 0:
            return None
        else:
            if len(result) == 0:
                return rent_money[0]
            else:
                ziti = rent_money[0]
                code_str = result[0]
                rent_money = self.jiema(ziti code_str)
                return rent_money

    def get_ya_jin(selfresponse):
        ya_jin = response.xpath(‘//span[@class=“c_333“]/text()‘).extract()
        if len(ya_jin) != 0:
            return ya_jin[0]
        else:
            return None

    def get_rent_way(selfresponse):
        rent_way = response.xpath(‘//ul[@class=“f14“]/li[1]/span[2]/text()‘).extract()
        if len(rent_way) != 0:
            return rent_way[0]
        else:
            return None

    def get_house_style(selfresponseresult):
        house_style = response.xpath(‘//ul[@class=“f14“]/li[2]/span[2]/text()‘).extract()
        if len(house_style) == 0:
            return None
        else:
            if len(result) == 0:
                return house_style[0].replace(“\xa0“““).replace(“ “““)
            else:
                code_str = result[0]

评论

共有 条评论