鍍金池/ 問(wèn)答/ 數(shù)據(jù)分析&挖掘問(wèn)答
茍活 回答

一個(gè)爬蟲(chóng)類就可以解決。

yield Request(URL,callback)返回第一次爬取的鏈接。

然后用callback函數(shù)對(duì)返回鏈接進(jìn)行再次爬取,接著再對(duì)爬取數(shù)據(jù)處理給item或者繼續(xù)yield Request也行。

callback就是回調(diào)的函數(shù)名。

不用存文檔里,那樣速度太慢了。


例子:類似于這種,有點(diǎn)偽代碼。

class MySpider(scrapy.Spider):
    name = 'zhilian_spider'
    allowed_domains = ['example.com']
    start_urls = [
        'http://www.zhaopin.com/citymap.html']
    yield scrapy.Request(url, callback=self.parse)

    def parse(self, response):
        ...
        yield scrapy.Request(url, callback=self.parse_jobs, dont_filter=True)

    def parse_jobs(self, response):
        ...
            yield item

建議研究一下scrapy
官網(wǎng)內(nèi)容:http://scrapy-chs.readthedocs...

help看了下
sort_values(self, return_indexer=False, ascending=True)
應(yīng)該是可以調(diào)整排列的順序的,修改ascending參數(shù) True升序排列,F(xiàn)alse降低序排列。

import pandas as pd
import numpy as np

dates = pd.date_range('1/1/2012', periods=5, freq='M')
help(dates)

dates.sort_values(ascending=False)

DatetimeIndex(['2012-05-31', '2012-04-30', '2012-03-31', '2012-02-29',
               '2012-01-31'],
              dtype='datetime64[ns]', freq='-1M')
              
dates.sort_values(ascending=True)

DatetimeIndex(['2012-01-31', '2012-02-29', '2012-03-31', '2012-04-30',
               '2012-05-31'],
              dtype='datetime64[ns]', freq='M')
厭惡我 回答
# 製造原 dataframe

from pandas import DataFrame

columns = ['data', 'id', 'key1']
d = {
    'data': [5, 10, 9, 8, 20],
    'id': [1, 2, 3, 4, 5],
    'key1': ['a', 'a', 'b', 'b', 'a']
}

dataframe = DataFrame(d, columns=columns)
# 利用 id_lst 製造新 dataframe

id_lst = [2, 3]
dataframe1 = dataframe[dataframe.id.isin(id_lst)]

我回答過(guò)的問(wèn)題: Python-QA

荒城 回答

function multi_array_sort($multi_array,$sort_field,$sort_type = SORT_ASC) {

if(empty($multi_array))
    return false;
$arr_field = array();
foreach($multi_array as $row) {
    if(empty($row))
        return false;
    array_push($arr_field,$row[$sort_field]);
}
array_multisort($arr_field,$sort_type,$multi_array);
return $multi_array;

}
$default['users'] = multi_array_sort($default['users'],'name',SORT_DESC);
print_r($default);

乖乖噠 回答

add 'r' in front of address, like this (r'C:....')

陌顏 回答

請(qǐng)先確認(rèn)你的scrapy依賴包是否成功安裝,以及pycharm中的依賴包配置是否正確

毀憶 回答
import pandas as pd
df = pd.DataFrame([['?', 1], ['?', 3], ['?', 2], [3, '?']])
print(df)
print(df.replace('?', 0))
維他命 回答

如果要全部覆蓋的話, 可以把原來(lái)的數(shù)據(jù)全部清除, 然后把新數(shù)據(jù)寫入.
具體代碼:

# 讀取后drop
data = pd.read_excel("data.xlsx", sheet_name=sheet_name)
mydata = data.drop([0], axis=0)
# 保存新的數(shù)據(jù)
book = load_workbook('data.xlsx')
writer = pd.ExcelWriter('data.xlsx',engine='openpyxl')
writer.book = book
# 清除原來(lái)的數(shù)據(jù)
idx = book.sheetnames.index('mysheet')
book.remove(book.worksheets[idx])
book.create_sheet('mysheet', idx)

writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
mydata.to_excel(writer, “mysheet”)
writer.save()

參考:How to clear a range of values in an Excel workbook using OpenPyXl
注意, 這樣會(huì)把原來(lái)mysheet的所有其它數(shù)據(jù)清除!

網(wǎng)妓 回答

echarts中可以寫個(gè)輔助bar “頂起來(lái)”

圖片描述

var data = [2900, 1000, 1400, 1200, 300, 230]

function iData (data) {
    let max = Math.max.apply(null,data)
    console.log(max)
    let iData = data.map((item) => {
        return max - item /2
    })
    return iData
}


option = {
    title: {
        text: '深圳月最低生活費(fèi)組成(單位:元)',
        subtext: 'From ExcelHome',
        sublink: 'http://e.weibo.com/1341556070/AjQH99che'
    },
    tooltip : {
        trigger: 'axis',
        axisPointer : {            // 坐標(biāo)軸指示器,坐標(biāo)軸觸發(fā)有效
            type : 'shadow'        // 默認(rèn)為直線,可選為:'line' | 'shadow'
        },
        formatter: function (params) {
            var tar = params[1];
            return tar.name + '<br/>' + tar.seriesName + ' : ' + tar.value;
        }
    },
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    xAxis: {
        type : 'category',
        splitLine: {show:false},
        data : ['總費(fèi)用','房租','水電費(fèi)','交通費(fèi)','伙食費(fèi)','日用品數(shù)']
    },
    yAxis: {
        type : 'value'
    },
    series: [
        {
            name: '輔助',
            type: 'bar',
            stack:  '總量',
            itemStyle: {
                normal: {
                    barBorderColor: 'rgba(0,0,0,0)',
                    color: 'rgba(0,0,0,0)'
                },
                emphasis: {
                    barBorderColor: 'rgba(0,0,0,0)',
                    color: 'rgba(0,0,0,0)'
                }
            },
            data: iData(data)
        },
        {
            name: '生活費(fèi)',
            type: 'bar',
            stack: '總量',
            label: {
                normal: {
                    show: true,
                    position: 'inside'
                }
            },
            data:data
        }
    ]
};
挽歌 回答

不能重寫arraytoString方法,對(duì)于數(shù)組的操作使用 Arrays

  • Arrays.toString()
  • Arrays.deepToString() 二維數(shù)組toString
耍太極 回答

可以用selenium執(zhí)行javascript命令來(lái)下拉窗口,從而使所有數(shù)據(jù)都加載顯示后,再進(jìn)行數(shù)據(jù)提取

凝雅 回答

看起來(lái)好像是 windows 系統(tǒng),會(huì)不會(huì)是文本編碼的問(wèn)題。

遺莣 回答

分析api,請(qǐng)求接口

苦妄 回答

如果ie可以操作,那就把程序里的useragent換成ie的咯

擱淺 回答

已解決

 def parse(self, response):
        li_list = response.css("div.list_cont.Left_list_cont.Left_list_cont1 > div.tab_tj > div > div > ul > li")
        url_list = []
        for li in li_list:
            item = CardItem()
            href = li.css("a::attr(href)").extract_first()
            item['href'] = href
            item['title'] = li.css("a::attr(title)").extract_first()
            url_list.append(href)
            yield item
        for i in url_list:
            print("->>> %s" % i)
            yield scrapy.Request(url=i, callback=self.detail_parse, headers=self.headers)