中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行基于bs4的拉勾網AI相關工作爬蟲實現

發布時間:2021-12-09 11:19:05 來源:億速云 閱讀:134 作者:柒染 欄目:大數據

本篇文章給大家分享的是有關如何進行基于bs4的拉勾網AI相關工作爬蟲實現,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

年初大家可能是各種跳槽吧,看著自己身邊的人也是一個個的要走了,其實是有一點傷感的。人各有志吧,不多評論。這篇文章主要是我如何抓取拉勾上面AI相關的職位數據,其實抓其他工作的數據原理也是一樣的,只要會了這個,其他的都可以抓下來。一共用了不到100行代碼,主要抓取的信息有“職位名稱”,“月薪”,“公司名稱”,“公司所屬行業”,“工作基本要求(經驗,學歷)”,“崗位描述”等。涉及的工作有“自然語言處理”,“機器學習”,“深度學習”,“人工智能”,“數據挖掘”,“算法工程師”,“機器視覺”,“語音識別”,“圖像處理”等幾大類。

下面隨便截個圖給大家看下,我們想要的信息

如何進行基于bs4的拉勾網AI相關工作爬蟲實現

如何進行基于bs4的拉勾網AI相關工作爬蟲實現

然后看下我們要的信息在哪里

如何進行基于bs4的拉勾網AI相關工作爬蟲實現

然后職位詳細信息是的url就在那個href里面,所以關鍵是要取到那個href就OK了。

下面直接上代碼

首先我們需要判斷一個url是不是合法的url,就是isurl方法。

urlhelper方法是用來提取url的html內容,并在發生異常時,打一條warning的警告信息

import urllib.request
from bs4 import BeautifulSoup
import pandas as pd
import requests
from collections import OrderedDict
from tqdm import tqdm, trange
import urllib.request
from urllib import error
import logging

logging.basicConfig(level=logging.WARNING)


def isurl(url):
   if requests.get(url).status_code == 200:
       return True
   else:
       return False


def urlhelper(url):
   try:
       req = urllib.request.Request(url)
       req.add_header("User-Agent",
                      "Mozilla/5.0 (Windows NT 6.1; WOW64)"
                      " AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/45.0.2454.101 Safari/537.36")
       req.add_header("Accept", "*/*")
       req.add_header("Accept-Language", "zh-CN,zh;q=0.8")
       data = urllib.request.urlopen(req)
       html = data.read().decode('utf-8')

       return html
   except error.URLError as e:
       logging.warning("{}".format(e))
       
       

下面就是爬蟲的主程序了,里面需要注意的是異常的處理,很重要,不然萬一爬了一半掛了,前面爬的又沒保存就悲劇了。還有一個是想說BeautifulSoup這個類真的是十分方便,熟練使用能節省很多時間。

import urllib.request
from bs4 import BeautifulSoup
import pandas as pd
import requests
from collections import OrderedDict
from tqdm import tqdm, trange
import urllib.request
from urllib import error
import logging


names = ['ziranyuyanchuli', 'jiqixuexi', 'shenduxuexi', 'rengongzhineng',
        'shujuwajue', 'suanfagongchengshi', 'jiqishijue', 'yuyinshibie',
        'tuxiangchuli']
for name in tqdm(names):
   savedata = []
   page_number = 0
   for page in range(1, 31):
       page_number += 1
       if page_number % 5 == 0:
           print(page_number)
       rooturl = 'https://www.lagou.com/zhaopin/{}/{}/'.format(name, page)
       if not isurl(rooturl):
           continue
       html = urlhelper(rooturl)
       soup = BeautifulSoup(html, "lxml")
       resp = soup.findAll('div', attrs={'class': 's_position_list'})
       resp = resp[0]
       resp = resp.findAll('li', attrs={'class': 'con_list_item default_list'})
       for i in trange(len(resp)):
           position_link = resp[i].findAll('a', attrs={'class': 'position_link'})
           link = position_link[0]['href']
           if isurl(link):
               htmlnext = urlhelper(link)
               soup = BeautifulSoup(htmlnext, "lxml")
               try:
                   # 職位描述
                   job_bt = soup.findAll('dd',
                                         attrs={'class': 'job_bt'})[0].text
               except:
                   continue
               try:
                   # 工作名稱
                   jobname = position_link[0].find('h4').get_text()
               except:
                   continue
               try:
                   # 工作基本要求
                   p_bot = resp[i].findAll('div',
                                           attrs={'class': 'p_bot'})[0].text
               except:
                   continue
               try:
                   # 月薪
                   money = resp[i].findAll('span',
                                           attrs={'class': 'money'})[0].text
               except:
                   continue
               try:
                   # 行業
                   industry = resp[i].findAll('div',
                                              attrs={'class': 'industry'})[0].text
               except:
                   continue
               try:
                   # 公司名字
                   company_name = resp[i].findAll(
                       'div', attrs={'class': 'company_name'})[0].text
               except:
                   continue
               rows = OrderedDict()
               rows["jobname"] = jobname.replace(" ", "")
               rows["money"] = money
               rows["company_name"] = company_name.replace("\n", "")
               rows["p_bot"] = p_bot.strip().replace(" ", ""). \
                   replace("\n", ",").replace("/", ",")
               rows["industry"] = industry.strip().\
                   replace("\t", "").replace("\n", "")
               rows["job_bt"] = job_bt
               savedata.append(rows)
   # 保存到本地
   df = pd.DataFrame(savedata)
   df.to_csv("./datasets/lagou/{}.csv".format(name), index=None)
   
   

以上就是如何進行基于bs4的拉勾網AI相關工作爬蟲實現,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金阳县| 太仓市| 东兴市| 洛浦县| 工布江达县| 如皋市| 桓台县| 北宁市| 金沙县| 象州县| 紫金县| 临夏市| 同心县| 屯留县| 同德县| 翁源县| 巨鹿县| 泰安市| 广德县| 府谷县| 新安县| 河间市| 许昌县| 连山| 西林县| 科技| 调兵山市| 巴马| 舟山市| 手游| 丹棱县| 钟祥市| 宁明县| 三亚市| 巫溪县| 巴南区| 新昌县| 黄梅县| 井陉县| 中牟县| 三门峡市|