基於招聘站點和企業名稱的email採集

2022-09-07 05:57:14 字數 3650 閱讀 8133

實習期間,公司安排了乙個簡單的任務,下面是任務要求:

基於招聘站點和企業名稱的 email採集

1. 獲取一批要採集email的企業

3. 從招聘頁面提取出企業的email(需要排除招聘站點官方、獵頭相關的email)。

4. 將採集的結果儲存到資料庫

**已經上傳到github上:基於招聘站點和企業名稱的 email採集

理一下大概的思路

初始url分幾鐘:智聯,獵聘,大街,前程無憂,中華英才網 這些都是需要進行單個站點的解析分別編寫**

連線資料庫提取企業名稱,插入url,進行get請求

解析各個站點獲取資訊

資訊進行正則匹配,匹配email

存到資料庫

檢查是否有api無

爬取的範圍

爬取的是需要採集的企業的email

多層網路結構間跳轉流程

選擇需要連線的資料庫和表

連線的表et_ema的ddl資訊:

create table `et_ema` ( `id` int(12) not null auto_increment comment 'id', `etid` int(11) not null comment '序號', `email` varchar(50) not null default '' comment '公司email', primary key (`id`), unique key `etid,email` (`etid`,`email`) ) engine=innodb auto_increment=1776 default charset=gbk row_format=dynamic comment='公司email'

確定爬取的字段和連線關係

公司email

main函式:

1. 連線資料庫

輸入:無

輸出:conn,cursor

2. 獲取公司資訊:etid,etname

輸入:cursor

輸出:companys

3. 站點**:獲取網頁資訊,1,2,3

輸入:url

輸出:text

4. 正則email,並去重

輸入:text

輸出:emails

5. 存入資料庫:一次存入一條資訊

輸入:conn, companys_email, table_name

輸出:無

6. 關閉資料庫

輸入:conn,cursor

輸出:無

正則匹配的問題

1. 不匹配括號裡的內容的方法:使用 ?:

2. [...]可以匹配【】中的任意字元,如[abc]即匹配a,b,c的任意乙個字元

3. findall匹配後不能使用group

字典和檔案格式轉換:

1.json.dumps    將 python 物件編碼成 json 字串

2.json.loads 將已編碼的 json 字串解碼為 python 物件

3. 讀取txt檔案裡的字典(開啟,read,load,關閉)

file = open('text.txt', 'r')

js = file.read()

dic = json.loads(js)

print (dic)

file.close()

4. 字典寫入txt:

dic = ,

'william':

}js = json.dumps(dic)

file = open('test.txt', 'w')

file.write(js)

file.close()

screen的用法:

screen:可以通過該軟體同時連線多個本地或遠端的命令行會話,並在其間自由切換,可以後台執行爬蟲

後台執行爬蟲的步驟:

1. 直接執行爬蟲

screen python run.py

2. 退出儲存視窗

ctrl+a+d

3. 檢視開啟的screen(意思的『螢幕』)

screen -ls

4. 重新開啟關閉的screen

screen -r 50126

xpath匹配問題:

一屬性多值:[contains(@class, "li")]
對於如何將edid對應:

獲取的時候同時將etid和etname從資料庫中拿出來,之後儲存的時候再一起存進去
如何去除list中重複的元素:

使用內建的set函式:

i = ['b','c','d','b','c','a','a']

z = list(set(i))

print z

在資料庫中建立表:

create table if not exists `et_email` (

`id` int(12) not null auto_increment comment 'id',

`etid` int(11) not null comment '序號',

`email` varchar(30) not null default '' comment '公司email',

primary key (`id`),`et_email`

key (`etid`)

) engine=innodb default charset=gbk row_format=dynamic comment='公司email'

replace into et_email(etid,email) values('100224953','[email protected]')

replace into et_email(etid,email) values('2817270','[email protected]')

多協程的問題:

gevent.pool不能進行多引數的傳遞,可以使用from functools import partial來進行多引數的傳遞

使用方法:

def run (a,b):

pass

partial.work = partial(run, a)

gevent.pool.map(partial.work,b)

(注意:

partial不能有迭代的引數

map函式是需要是以迭代的方式來對b進行資料的提取,以後以引數的形式呼叫

如果有多個需要迭代的引數,可以使用z = zip(a,b))

基於web站點的xss攻擊

xss cross site script 全稱跨站指令碼攻擊,為了與 css cascading style sheet 有所區別,所以在安全領域稱為 xss。xss 攻擊,通常指黑客通過html 注入篡改網頁,插入惡意指令碼,從而在使用者瀏覽網頁時,控制使用者瀏覽器的一種攻擊行為。在這種行為最初...

經營企業還是經營人才 剖析世界名企如何招聘策略

沃爾瑪 從小時工做起 在沃爾瑪,員工有大學學歷,或有一張 mba文憑並不見得能夠贏得高階主管的賞識,只有通過自己的努力,以傑出的工作業績證明了自己的實力才行。財富 雜誌曾這樣評價沃爾瑪 它只認同花大錢的培訓和提公升激勵以贏得雇員的忠誠和熱情。管理人員中有 60 的人是從小時工做起的。當然,這並不是說...

基於PHP MySQL的校園兼職招聘平台

隨著我國教育體制的改革。對大學生的要求也越來越高大,學生已經不僅僅只限於學習書本上的知識,他們也需要積極地參加到社會活動中來。其中兼職就是一項很好的鍛鍊自己的機會。在兼職的時候,不僅能夠鍛鍊自己,同時還能夠有一部分的收入來補貼自己。這樣大學生就。我哥有更多的經濟收入 而且不在向家裡伸手要錢。更重要的...