這篇文章介紹用python抓取求職網站資訊
本次抓取的是智聯招募網站搜尋「資料分析師」之後的資訊。
python版本: python3.5。
我用的主要package是 Beautifulsoup + Requests+csv
另外,我將招募內容的簡單描述也抓取下來了。
檔案輸出到csv檔案後,發現用excel開啟時有些亂碼,但用檔案軟體開啟(如notepad++)是沒有問題的。
為了能用Excel開啟時正確顯示,我用pandas轉換了以下,並且加上上列名。轉換完後,就可以正確顯示了。關於用pandas轉化,可以參考我的部落格:
由於招募內容的描述較多,最後將csv文件另存為excel文件,並調整下格式,以便於查看。
最後效果如下:
實作程式碼如下:訊息爬取的程式碼如下:
# Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEMON" from bs4 import BeautifulSoup import requests import csv def download(url): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'} req = requests.get(url, headers=headers) return req.text def get_content(html): soup = BeautifulSoup(html, 'lxml') body = soup.body data_main = body.find('div', {'class': 'newlist_list_content'}) tables = data_main.find_all('table') zw_list = [] for i,table in enumerate(tables): if i == 0: continue temp = [] tds = table.find('tr').find_all('td') zwmc = tds[0].find('a').get_text() zw_link = tds[0].find('a').get('href') fkl = tds[1].find('span').get_text() gsmc = tds[2].find('a').get_text() zwyx = tds[3].get_text() gzdd = tds[4].get_text() gbsj = tds[5].find('span').get_text() tr_brief = table.find('tr', {'class': 'newlist_tr_detail'}) brief = tr_brief.find('li', {'class': 'newlist_deatil_last'}).get_text() temp.append(zwmc) temp.append(fkl) temp.append(gsmc) temp.append(zwyx) temp.append(gzdd) temp.append(gbsj) temp.append(brief) temp.append(zw_link) zw_list.append(temp) return zw_list def write_data(data, name): filename = name with open(filename, 'a', newline='', encoding='utf-8') as f: f_csv = csv.writer(f) f_csv.writerows(data) if __name__ == '__main__': basic_url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%85%A8%E5%9B%BD&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88&sm=0&p=' number_list = list(range(90)) # total number of page is 90 for number in number_list: num = number + 1 url = basic_url + str(num) filename = 'zhilian_DA.csv' html = download(url) # print(html) data = get_content(html) # print(data) print('start saving page:', num) write_data(data, filename)
用pandas轉換的程式碼如下:
# Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEMON" import pandas as pd df = pd.read_csv('zhilian_DA.csv', header=None) df.columns = ['职位名称', '反馈率', '公司名称', '月薪', '工作地点', '发布日期', '招聘简介', '网页链接'] # 将调整后的dataframe文件输出到新的csv文件 df.to_csv('zhilian_DA_update.csv', index=False)
以上是用python抓取求職網站信息的詳細內容。更多資訊請關注PHP中文網其他相關文章!