网络爬虫——前程无忧网数据获取及存储(低级)


网络爬虫——前程无忧网数据获取及存储(低级)

目标网站:前程无忧招聘网

目标网址:https://search.51job.com/list/120000,000000,0000,00,9,99,Python,2,1.html

目标数据:(1)职位名(2)公司名(3)工作地点(4)薪资 (5)发布时间

任务要求

(1)使用urllib或requests库实现该网站网页源代码的获取,并将源代码进行保存;

(2)通过Xpath解析方法对保存的的源代码读取并进行解析,成功找到目标数据所在的特定标签,进行网页结构的解析;

(3)定义函数,将获取的目标数据保存到txt文本文件中。

这里使用的是Xpath,相对于之前猫眼电影使用的,这个较为简单,但是数据处理上较为复杂。

源码

import requests
import json
import csv
from requests.exceptions import RequestException
from lxml import etree

def getHtmlText(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69'        
    }
    try:
        result = requests.get(url,headers=headers,timeout=30)
        result.raise_for_status()
        result.encoding = result.apparent_encoding
        return result.text
    except:
        return ""

def parsePage(html):
    ulist = []
    clist = []
    rlist = []
    newhtml =etree.HTML(html,etree.HTMLParser())
    result=newhtml.xpath('//*[@id="resultList"]/div[@class="el"]//text()')

    for i in range(len(result)):
        ulist.append(result[i].replace(" ","").replace('\r',"").replace("\n",''))

    while '' in ulist:
        ulist.remove('')

    length = len(ulist)
    weight = int(length / 5 )

    for i in range(weight):
        for j in range(5):
            clist.append(ulist[i*5+j])
        rlist.append(clist)
        clist = []

    return rlist

# def txtdata(data):
#     with open('top20.txt','w')as file:
#         for i in data:
#             for j in i:
#                 print(j)
#         print('successful')

def storedata(data):
    with open('top20.txt','w',encoding = 'utf-8')as file:
        for i in data:
            file.write(json.dumps(i,ensure_ascii=False)+'\n')
        print('ok')

def csvdata(data):
    with open('top20.csv','w',encoding = 'utf-8',newline='')as csvfile:
        fieldnames = ['职位名','公司名','工作地点','薪资','工作时间']
        writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
        writer.writeheader()
        for i in data:
            writer.writerow({'职位名':i[0],'公司名':i[1],'工作地点':i[2],'薪资':i[3],'工作时间':i[4]})
        print('ok')

def main():
    url="https://search.51job.com/list/120000,000000,0000,00,9,99,Python,2,1.html"
    html=getHtmlText(url)
    rlist=parsePage(html)

#     txtdata(data)
    storedata(rlist)
    csvdata(rlist)
main()

文章作者: michaelming
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 michaelming !
 上一篇
中国大学排名数据抓取 中国大学排名数据抓取
网络爬虫——中国大学排名数据抓取目标网址中国大学排名网:http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html 全球有很多份大学排名,这里以上海交通大学研发的“软科中国最好大学排名20
2019-04-20
下一篇 
人工智能——mnist(手写识别) 人工智能——mnist(手写识别)
人工智能——mnist(手写识别)因为时间较久了,就不详细介绍了。简单的说,一开始对已有的大量数字图片进行训练生成模型。然后通过对一张手写的数字图片进行读取,进入模型匹配,输出结果。 源码# Python3 # 使用LeNet5的七层卷积
2018-12-09
  目录