python数据爬虫——对爬取的数据进行保存(二)

前一篇文章介绍了如何抓取岗位信息,这一篇为大家带来如何把抓取的数据进行一些简单的处理,以及保存。

文章链接:https://www.jianshu.com/p/97b3418da15e

先回顾一下源代码,要是对代码有不清楚的地方可以去看一下上方链接的文章:

import requests

from lxml import etree

import time

for i in range(1,10):

    url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590%25E5%25B8%2588,2,'

    url1 = url+str(i)+str('.html')

    data = requests.get(url1).text

    html=data.encode('ISO 8859-1')

    f = etree.HTML(html)


    for j in range(5,54):

        PATH = ('//*[@id="resultList"]/div[{}]').format(j) 

        PATH1 = f.xpath(PATH)

        for div in PATH1:

            name = div.xpath('./p/span/a/@title')

            company = div.xpath('./span[1]/a/text()')

            address = div.xpath('./span[2]/text()')

            money = div.xpath('./span[3]/text()')

            print(name,company,address,money)

            time.sleep(1)#时间间隔。防止被封IP


运行上方的代码,我们可以发现多了很多"[ ]",我们来对代码进行修改一下,只需要在获取的路径的后面加上[0],就可以将结果的括号消除掉。

name = div.xpath('./p/span/a/@title')[0]

company = div.xpath('./span[1]/a/text()')[0]

address = div.xpath('./span[2]/text()')[0]

money = div.xpath('./span[3]/text()')[0]


试试运行结果:

数据分析师 四川众合智控科技有限公司 成都-金牛区 1.5-2万/月 数据分析师 深圳市宇轩网络技术有限公司武汉分… 武汉-洪山区

4.5-7千/月 数据分析师 大连颢源信息咨询有限公司 大连-中山区 6-8千/月 数据分析师 江苏物联网络科技发展有限公司 南京-雨花台区 1-1.5万/月 策略数据分析师(J10263) 会找房(北京)网络技术有限公司 北京-海淀区 6-8千/月 数据分析师(游戏)

上海绿岸网络科技股份有限公司 上海-宝山区 1-1.5万/月 应届毕业生可无经验带薪学习 直招数据分析师 北京瑞益信息咨询有限公司

北京-朝阳区 0.8-1万/月 GIS数据分析师 凯普奇软件(北京)有限公司 北京 0.6-1万/月 数据分析师(日语) IBM China

大连 0.8-1万/月 数据分析师(3776) 完美世界(北京)总部/完美时空 北京 1-1.5万/月

在运行的结果中已经没有括号啦,我们接着开始写上我们的数据保存代码,我们这里把数据保存为CSV文件。

import csv #引用CSV

fp = open('需要保存的位置和文件名.csv',newline='',encoding='utf_8_sig')

writer = csv.writer(fp)

...

...

..

writer.writerow((name,company,address,money))#放在内容输出的位置。把每一条数据都保存下来


我们来看看完整的代码,注意保存路径要修改成自己本地的路径哦。

import requests

from lxml import etree

import time

import csv

fp = open('C:/Users/MIiNA/Desktop/Date.csv','wt',newline='',encoding='utf_8_sig')

writer = csv.writer(fp)

for i in range(1,10):

    url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590%25E5%25B8%2588,2,'

    url1 = url+str(i)+str('.html')

    data = requests.get(url1).text

    html=data.encode('ISO 8859-1')

    f = etree.HTML(html)


    for j in range(5,54):

        PATH = ('//*[@id="resultList"]/div[{}]').format(j) 

        PATH1 = f.xpath(PATH)

        for div in PATH1:

            name = div.xpath('./p/span/a/@title')[0]

            company = div.xpath('./span[1]/a/text()')[0]

            address = div.xpath('./span[2]/text()')[0]

            money = div.xpath('./span[3]/text()')[0]

            print(name,company,address,money)

            writer.writerow((name,company,address,money))

            time.sleep(1)#时间间隔。防止被封IP

fp.close()


输出结果:


python数据爬虫——对爬取的数据进行保存(二)_第1张图片

数据都保存下来,有没有很开心~大家快动手试试吧!

找找自己喜欢的网站,进行试验吧!记住一定要加上时间间隔time.sleep,文明爬取~

数据爬取多了,发现程序意外终止2333!

检查原因,原来是抓取到的数据为空,大家只需要把[0],这个格式限制取消掉就行了。

后面为大家带来如何爬取二级页面的方法。尽请关注!喜欢的点个赞哦!

你可能感兴趣的:(python数据爬虫——对爬取的数据进行保存(二))