<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          爬蟲案例:拉勾網(wǎng)工作職位爬取

          共 6075字,需瀏覽 13分鐘

           ·

          2022-06-24 18:46

          本人非IT專業(yè),因?yàn)閷?duì)python爬蟲比較感興趣,因此正在自學(xué)python爬蟲,學(xué)習(xí)后就拿拉勾網(wǎng)練練手??,同時(shí)給zhenguo老師投稿,還能收獲50元

          本次我們的目標(biāo)是爬取拉勾網(wǎng)上成都的python崗位信息,包括職位名稱、地區(qū)、薪水、任職要求、工作內(nèi)容標(biāo)簽、公司名稱、公司的類別及規(guī)模和福利待遇等信息,并將這些信息保存在一個(gè)CSV文件當(dāng)中,廢話不多說,開干!

          首先我們進(jìn)入拉勾網(wǎng),輸入Python關(guān)鍵信息,并選擇成都,首先分析一下當(dāng)前的url,url當(dāng)中的pn=為頁碼,因此我們想爬取第幾頁的信息,就將pn的值設(shè)置為第幾頁。

          'https://www.lagou.com/wn/jobs?pn=2&fromSearch=true&kd=python&city=%E6%88%90%E9%83%BD'
          'https://www.lagou.com/wn/jobs?pn=1&fromSearch=true&kd=python&city=%E6%88%90%E9%83%BD'

          想要爬取所有頁面,只需要設(shè)置一個(gè)循環(huán),每個(gè)循環(huán)中調(diào)用爬取工作信息的函數(shù)即可,代碼如下:

          if __name__ == '__main__':
              # 爬取1-30頁的內(nèi)容
              for page in range(1, 31):
                  url = f'https://www.lagou.com/wn/jobs?pn={page}&fromSearch=true&kd=python&city=%E6%88%90%E9%83%BD'
                  # 該函數(shù)的功能為爬取一頁信息內(nèi)容并寫入到CSV文件內(nèi)
                  get_info_job(url)
                  # 為了保證爬取速度過快導(dǎo)致IP被封,設(shè)置一下等待時(shí)間,爬取下一頁的時(shí)候等待2秒
                  sleep(2)
          接下來就是定義爬取每一頁工作信息內(nèi)容并寫入到CSV文件內(nèi)保存的函數(shù),該函數(shù)的實(shí)現(xiàn)方式如下:
          def get_info_job(job_url):
              response = requests.get(url=job_url, headers=headers).text
              selector = html.etree.HTML(response)
              lis = selector.xpath('//*[@id="jobList"]/div[1]/div')

              for li in lis:
                  name_area = li.xpath('.//div[1]/div[1]/div[1]/a/text()')
                  # 獲取職位名稱
                  title = name_area[0]
                  # 獲取地區(qū)
                  area = name_area[1].replace('[''').replace(']''')
                  # 獲取薪水
                  salary = li.xpath('.//div[1]/div[1]/div[2]/span/text()')[0]
                  # 獲取經(jīng)驗(yàn)和學(xué)歷要求,有時(shí)候沒有要求時(shí),xpath匹配結(jié)果是一個(gè)空列表,程序會(huì)報(bào)錯(cuò),因此這里需要捕獲異常,一旦捕獲異常,代表該工作無要求
                  try:
                      exp_degree = li.xpath('.//div[1]/div[1]/div[2]/text()')[0]
                  except IndexError:
                      exp_degree = '無要求'
                  # 獲取工作標(biāo)簽,有時(shí)候沒有工作標(biāo)簽,沒有的話就用“/”代替
                  tags = li.xpath('.//div[2]/div[1]/span/text()')
                  if not tags:
                      tags = '/'
                  # 獲取公司名稱
                  company_name = li.xpath('.//div[1]/div[2]/div[1]/a/text()')[0]
                  # 獲取公司類別和規(guī)模,有些公司沒有這些信息,xpath匹配結(jié)果是一個(gè)空列表,程序會(huì)報(bào)錯(cuò),因此捕獲異常,一旦捕獲到異常,代表沒有公司類別和規(guī)模信心,用“/”代替
                  try:
                      company_Type_Size = li.xpath('.//div[1]/div[2]/div[2]/text()')[0]
                  except IndexError:
                      company_Type_Size = '/'
                  # 獲取福利待遇,同樣有些公司不公布福利待遇,xpath匹配結(jié)果也是一個(gè)空列表,程序會(huì)報(bào)錯(cuò),因此需捕獲異常,一旦捕獲到異常,代表公司沒有公布福利待遇等信息,用“/”替代
                  try:
                      benefits = li.xpath('.//div[2]/div[2]/text()')[-1].replace('“''').replace('”''')
                  except IndexError:
                      benefits = '/'
                  job_datas = {
                      '職位名稱': title,
                      '地區(qū)': area,
                      '薪水': salary,
                      '經(jīng)驗(yàn)和學(xué)歷要求': exp_degree,
                      '工作標(biāo)簽': tags,
                      '公司名稱': company_name,
                      '公司類別和規(guī)模': company_Type_Size,
                      '福利待遇': benefits
                  }
                  # print(job_datas)
                  writer.writerow([
                      title,
                      area,
                      salary,
                      exp_degree,
                      tags,
                      company_name,
                      company_Type_Size,
                      benefits
                  ])

          這里具體的爬取和保存的函數(shù)就定義完畢了,每次循環(huán)的時(shí)候直接調(diào)用該函數(shù)就行了,并且該程序能夠適配所有地區(qū)和所有工作崗位的信息爬取,只需要更換具體的url就行了。該程序爬取成都崗位的信息效果圖如下:

          我們可以看到,我們爬取的信息有職位名稱、地區(qū)、薪水、經(jīng)驗(yàn)和學(xué)歷要求、工作標(biāo)簽、公司名稱、公司類別和規(guī)模、福利待遇等信息。

          完整源碼下載,請(qǐng)關(guān)注我的公眾號(hào),后臺(tái)回復(fù):

          瀏覽 59
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91AV在线电影 | 黑人大屌cao逼 | 日韩成人三级片 | 久久夜色免费视频 | 青青草原在线视频精品 |