檢視原始碼:
ok!直接上**!
1.使用了scrapy框架,這裡給出爬蟲的**管道檔案的**
# -*- coding: utf-8 -*-
import scrapy
from bosszhipin.items import bosszhipinitem
class
bossspider
(scrapy.spider)
: name =
'boss'
allowed_domains =
['zhipin.com'
] offset =
1 url =
''start_urls =
[ url +
str(offset)
] url1 =
''defparse
(self, response)
:for each in response.xpath(
"//div[@class='job-primary']"):
item = bosszhipinitem(
) item[
'company'
]= each.xpath(
"./div[@class='info-company']/div/h3/a/text()"
).extract()[
0]item[
'company_link'
]= self.url1 + each.xpath(
"./div[@class='info-company']/div/h3/a/@href"
).extract()[
0]item[
'position'
]= each.xpath(
"./div[@class='info-primary']/h3/a/div[@class='job-title']/text()"
).extract()[
0]item[
'wages'
]= each.xpath(
"./div[@class='info-primary']/h3/a/span[@class]/text()"
).extract()[
0]item[
'place'
]= each.xpath(
"./div[@class='info-primary']/p/text()"
).extract()[
0]item[
'experience'
]= each.xpath(
"./div[@class='info-primary']/p/text()"
).extract()[
1]yield scrapy.request(item[
'company_link'
],meta=
,callback=self.get_company_info)
if self.offset <10:
self.offset +=
1yield scrapy.request(self.url +
str(self.offset)
, callback=self.parse)
defget_company_info
(self,response)
: item = response.meta[
'item'
] company_link = item[
'company_link'
] company_infos = response.xpath(
"//div[@id='main']/div[3]/div/div[2]/div/div[1]/div/text()"
).extract(
) position_nums = response.xpath(
"//div[@id='main']/div[1]/div/div[1]/div[1]/span[1]/a/b/text()"
).extract(
)for position_num,company_info in
zip(position_nums,company_infos)
: item[
'position_num'
]= position_num
item[
'company_info'
]= company_info
print
(item[
'position_num'
],item[
'company_info'])
yield item
import json
# dumps和
class
bosszhipinpipeline
(object):
def__init__
(self)
: self.filename =
open
('bossdata.json'
,'wb'
)def
process_item
(self, item, spider)
:# 將獲取到的資料儲存為json格式
text = json.dumps(
dict
(item)
,ensure_ascii=
false)+
'\n'
self.filename.write(text.encode(
'utf-8'))
return item
defclose_spider
(self,spider)
:print
('爬蟲關閉'
# response = requests.post(url=url,data =json.dumps(data),headers=headers) # 注意請求的方式是json還是text
print
(response.text)
3&4.
import json,os
import requests
from bs4 import beautifulsoup
import time
# 獲取所有的章節名和章節位址
if __name__ ==
'__main__'
:# 拿到url位址
target =
''req = requests.get(url=target)
# 拿到html文件
html = req.text
# 解析html文件資訊
div_bf = beautifulsoup(html)
# 建立bf物件來儲存html資訊
div = div_bf.find_all(
'div'
,class_=
'book_list'
) a_list = div_bf.select(
'div>ul>li>a'
) titlelist1 =
titlelist2 =
for each in a_list:
# 拿到每一章的標題和連線
str1 = each.string
str2 = target+each.get(
'href'
) d =
dict
(zip
(titlelist1,titlelist2)
) jsonobj = json.dumps(d)
.encode(
)print
(type
(jsonobj)
)with
open
('build.json'
,'wb'
)as f:
f.write(jsonobj)
資料分析 資料分析的誤區
在資料分析的過程中,我們難免會走一些彎路,但有些彎路是可以避免的,下面我將介紹幾個資料分析過程中常見的誤區 我們一定都聽說過二戰中的乙個經典示例 軍方為了提高戰鬥機飛行員的生還率,打算在飛機上增加裝甲的厚度,但不能在所有部位加厚,這樣會喪失戰機的靈活性,於是軍方請了統計學家來研究,這些專家在一開始就...
python資料分析小專案練習
資料來源 小練習import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcparams font.sans serif simhei 用來正常顯示中文標籤,否則中文顯示方塊 plt.rcparams ax...
資料分析 資料分析概述
了解業務 了解資料 確認業務和資料 預期分析和管理 資料分析方式01.了解資料資料 1.測量標度型別 屬性本源並不是數字或者符號,通過測量標度將數值或者符號和物件的屬性建立關聯。屬性的型別 測量尺度 nominal 標稱 等於或者不等於 一對一的變換 ordinal 序數 大於或者小於 單調函式的變...