前一篇文章介绍了如何抓取岗位信息,这一篇为大家带来如何把抓取的数据进行一些简单的处理,以及保存。
文章链接: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()
输出结果:
数据都保存下来,有没有很开心~大家快动手试试吧!
找找自己喜欢的网站,进行试验吧!记住一定要加上时间间隔time.sleep,文明爬取~
数据爬取多了,发现程序意外终止2333!
检查原因,原来是抓取到的数据为空,大家只需要把[0],这个格式限制取消掉就行了。
后面为大家带来如何爬取二级页面的方法。尽请关注!喜欢的点个赞哦!