python爬取jquery数据

2019-07-10  本文已影响0人  CheeeerYan

在使用tableau进行学习的过程中发现,一些比较偏市场的数据没有一个较好的获取途径,以便我们分析一些较为有用的数据。因此第一步,我们先进行数据的爬取。

1. python环境和脚本

本次想要分析的为 深圳2019年6月份在售新盘的数据,因此我们先找到数据的源网站,官方的网站数据分布比较散落,因此决定使用咚咚找房的哈哈。

比如某个新盘的价格列表如 http://bol.szhome.com/baj/8727.html

这里先看一下response中是否有页面显示的内容,发现这个网页是没有的,那我们就不能在response中根据位置来得到数据。

翻一页,看一下数据是怎样返回的,根据返回的json数据可以看出是jquery返回的数据,构造数据只需要看一下翻页请求中的url和参数规律即可。

响应中的json数据,以此来获得数据。。

请求结果的

2. 编写脚本并跑一跑

爬取数据的脚本如下,jquery类的数据都可以用下面的改一下请求和接收的返回数据就可以了。


#coding:utf-8

import requests

from urllib.parse import urlencode

import json

def parse_ajax_web(pageindex,teda):

    url = 'http://bol.szhome.com/Project/GetBolBaList/'

    parm = {

        'page': pageindex,

        'pageSize': 20,

        'id': '45153-1-0-0',

    }

    headers = {

        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36",

        "Referer": "http://bol.szhome.com/baj/5917.html",

        'x-Requested-with': 'XMLHttpRequest',

        'Origin': 'http://bol.szhome.com',

        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

        'Cookie': 'Hm_lvt_9a7b16ce65b422c3a2b3f1d30d705175=1561875931; Hm_lpvt_9a7b16ce65b422c3a2b3f1d30d705175=1561875931; Hm_lvt_c26237ea59fbcd4df5bf21d4e0b85a64=1561876924; Hm_lpvt_c26237ea59fbcd4df5bf21d4e0b85a64=1561907011',

        'Content-Length': '33',

        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

        'Connection': 'keep-alive',

        'Accept-Encoding': 'gzip, deflate',

        'Accept-Language': 'zh-CN,zh;q=0.9',

    }

    response = requests.post(url, headers=headers,data=urlencode(parm))

    if response.status_code == 200:

        json = response.json()

        data = json.get('list')

    for item in data: 

        if item.get('XMMC') is not None:

            linedata = item.get('XMMC')+","+item.get('LD')+ ","+item.get('ZH')+ ","+item.get('JZMJ')+ ","+item.get('LC')+ ","+item.get('FH')+ ","+item.get('BAJ') +"\n"

            teda.write(linedata)

def main():

    with open("D:/data.txt",'w') as teda:

        for pageindex in (range(1,95)):

            parse_ajax_web(pageindex,teda)

if __name__ == '__main__':

    main()

3、得到数据并分析

按照上述脚本分别爬取其他楼盘的数据,汇总后导入tablau中

上一篇 下一篇

猜你喜欢

热点阅读