一個(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中的依賴包配置是否正確
ROBOTSTXT_OBEY = False 再試試
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ù)清除!
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
}
]
};
不能重寫array
的toString
方法,對(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)
把相關(guān)代碼貼全,謝謝
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。