python - pyquery 房天下 spider

import requests
from pyquery import PyQuery as pq
import re
import pandas
import datetime

def save_as_csv(houses_info_list):
    houses_df = pandas.DataFrame(houses_info_list)
    houses_df.to_csv('{}上海二手房信息.csv'.format(datetime.date.today().strftime('%Y-%m-%d')))


def get_house_info_list(url):
    domain = url+'{}'
    html = requests.get(url).text
    house_items = pq(html).find('.houseList > .list > .info').items()
    house_list = []
    for house in house_items:
        next_url = domain.format(house.find('.title > a').attr('href'))
        house_info = get_house(next_url)
        house_list.append(house_info)
    return house_list

def get_house(url):
    info = {}
    html = requests.get(url).text
    doc = pq(html)
    info['标题'] = doc.find('#lpname').text()
    info['价格'] = doc.find('div.trl-item.sty1').text()
    items = doc.find('.trl-item1').items()
    for item in items:
        value, key = item.text().strip().split()
        info[key] = value
    items = doc.find('.trl-item2').items()
    for item in items:
        key = ''.join(item.find('.lab').text().split())
        value = ''.join(item.find('.rcont').text().split())
        info[key] = value.replace('地图', '')

    info['联系人'] = doc.find('#agentname').text()
    info['联系方式'] = doc.find('#mobilecode').text()
    items = doc.find('.qu_bianqu1 > .text-item').items()
    for item in items:
        key = item.find('.lab').text()
        value = item.find('.rcont').text()
        if key == '挂牌时间':
            value = re.compile(r'(\d{4}-\d{2}-\d{2})').search(value).group(1)
        info[key] = value
    print(info)
    return info

if __name__ == '__main__':
    houses_info_list = get_house_info_list('http://esf.sh.fang.com/')
    save_as_csv(houses_info_list)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PeersLee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值