python3 requests_html 爬取智联招聘数据(简易版)

PS重点:我回来了-----我回来了-----我回来了

 


1. 基础需要: python3 基础

                       html5 CS3 基础

2.库的选择: 原始库  urllib2  (这个库早些年的用过,后来淡忘了)

                      进阶库  requests + BeautifulSop

                      Xpth 方法 -库lxml

         组合版: requests_html  (requests 作者)

         存储:         csv

         正则:          re


 

PS:那个方便用那个。

|-1

PS: 智联的网页ip复制到本地text,中文会出现加密,其他网站我没试过,但是智联真是这样,切记,切记

另外就是下载的页面数据,都是通过js渲染的,如果不使用render 方法,有些数据读取不到。

import requests_html
import csv
import re

session = requests_html.HTMLSession()
r = session.get('https://sou.zhaopin.com/?jl=530&kw=爬虫工程师&kt=3')
r.html.render()
View Code

 

|-2

本来是要 使用   .html.find()  方法找标签,但是获取的数据只有一行,真的哔了狗,怀疑找的 html 标签不对,直接copy复制的层级,没问题。应该还是数据加载的问题

PS: 用正则去找的div  标签。

用 (\d)K-(\d)K 获取工资,它给我把0和k干掉了,神马情况。

xinzi = '<p.* class="contentpile__content__wrapper__item__info__box__job__saray">(.*?)</p>'
xinzi_title = re.findall(xinzi,r.html.html)


gongsi = '<a.*  target="_blank" class="contentpile__content__wrapper__item__info__box__cname__title company_title>(.*?)</>'
gongsi_title = re.findall(gongsi,r.html.html)
View Code

 

|-3

重点来了,文件的获取之后在存储。真的要尝试后才发现自己的错误点,马克思告诉我们要实践检验,是没错的。

获取之后的数据,存在列表里面,存在csv里面,发现就一行,就用了for 循环,遍历存储,但是发现存储的值还是间隔一行。目前没有什么好的思路,再找找原因。

wiht open('xinzi.csv','w+',) as files:
  csvwrite = csv.write(files)
  csvwrite.writeorw(['公司',薪资''])
  
  #xinzi_title1 = r.html.find(xinzi_title,first=True)
  #gongsi_title1 = r.html.find(gongsi_title,first=True)

  for i in range(len(xinzi_title)):
    csvwrite.writerow([xinzi_title[i],gongsi_title[i]])
View Code

 


 

 

完整:

 

#/usr/bin/python3
#conding:utf-8
#author:yan

import requests_html
import csv
import re
# 获取连接,进行网页下载,js渲染
session = requests_html.HTMLSession()
r = session.get('https://sou.zhaopin.com/?jl=530&kw=爬虫工程师&kt=3')
r.html.render()

#
xinzi = '<p.* class="contentpile__content__wrapper__item__info__box__job__saray">(.*?)</p>'
xinzi_title = re.findall(xinzi,r.html.html)


gongsi = '<a.* target="_blank" class="contentpile__content__wrapper__item__info__box__cname__title company_title">(.*?)</a>'
gongsi_title = re.findall(gongsi,r.html.html)


with open('xinzi1.csv','w+',) as filea:
    csvwrite = csv.writer(filea)
    csvwrite.writerow(['薪资','工资'])
    #xinzi_title1 = r.html.find(xinzi_title,first=True)
    #gongsi_title1 = r.html.find(gongsi_title,first=True)
    for i in range(len(xinzi_title)):
        csvwrite.writerow([xinzi_title[i],gongsi_title[i]])
View Code

 

 

PS:加油,

        最近是心态炸裂,颓废了两年,

        耗费大半个时间,真的是放纵自己。

        该活过来了,生命走了三分之一的路程,浪费了多少。

 

posted @ 2019-10-30 17:46  夜天铭  阅读(1001)  评论(0编辑  收藏  举报