Python爬取网页信息并保存为CSV文件!又学了一招!

511 阅读2分钟

本次爬取的网页是猎聘网内关于深圳的所有招聘信息,一共400多个职位,并保存为csv文件存储,好了,话不多说,开始进入讲解。(对爬虫感兴趣的,可以参考此篇文章的做法去爬你想要的网站去吧!!!)

首先打开目标网站:

页面信息如下(因为招聘信息是动态,可能你的界面的职位会有所不同)

![](https://p1-tt-ipv6.byteimg.com/large/pgc-image/7088daaae7cd445caa7ef07043d30647)

我们按F12进入开发者界面:

点击元素旁边的类似鼠标的按钮,如下:

![](https://p1-tt-ipv6.byteimg.com/large/pgc-image/1787a955b9b74443ac73eddfb4497546)

然后就可以在原网页点击我们想要获取的标签,之后就会显示该标签对应的html代码

比如点击工作名称:双语解说员,然后右边就会帮我们找到对应的源代码。

![](https://p3-tt-ipv6.byteimg.com/large/pgc-image/da52442fd26b4fbdb7c890e974b00336)

接着我们分析上下代码,发现该所有职位的代码都在

  • ..
  • 之间

    ![](https://p6-tt-ipv6.byteimg.com/large/pgc-image/3e1743c7d82c4723a0a88ed6fb5b758e)

    所有我们可以找到包含这些职位代码的上一个标签,即

    ![](https://p26-tt.byteimg.com/large/pgc-image/a1c5c869d38b42dbaf32ce942e73db31)

    故代码可以写成 all_job = html.find("ul", class_="sojob-list").find_all("li")

    这样我们就定位到这个工作列表下,下面所有操作都是从这里面去查询,我们用一个循环遍历每个

  • 下的子标签

    用find方法可以让网页解析器一直查询,直到查到对应的标签下停止,这里我们可以定位到

    该标签下就是我们要爬取的东西

    ![](https://p6-tt-ipv6.byteimg.com/large/pgc-image/9a7b7ee2f1db4ce2a3d4ea4cab14545a)

    爬取工作名实现:name = date.find("a", target="_blank").text.strip()

    再打开<p class="condition clearfix>标签,爬取地区,薪水,对应的网站,学历

    ![](https://p9-tt-ipv6.byteimg.com/large/pgc-image/80ffd393519b45d2a58d6c91e8a75661)

    因此

    爬取地区实现:area = date.find("a", class_="area").text

    爬取薪水实现**:salary = date.find("span", class_="text-warning").text**

    爬取网站实现**:url = date.find("a", class_="area")["href"]**

    爬取学历实现**:edu = date.find("span", class_="edu").text**

    最后我们再用一个循环去让网站的url发生变化,也就是网站最后面的数字就是该网页的页数,如下:

    ![](https://p1.pstatp.com/origin/pgc-image/896710fa521f408fbe1e854ee72330a1)

    最后再通过两行命令,将结果保存为csv文件即可

    爬取结束!!

    查看结果:

    ![](https://p9-tt-ipv6.byteimg.com/large/pgc-image/6f333a3e37a3494599c850df3ec1f559)

    附上完整代码:

    import requests

    import bs4

    import pandas as pd

    result = {"jobname": [], # 工作名

    "area": [], # 地区

    "salary": [], # 薪水

    "url": [], # 网址

    "edu":[] #学历

    }

    for i in range(11):

    url = "www.liepin.com/zhaopin/?co…" + str(i)

    print(url)

    r = requests.get(url)

    html = bs4.BeautifulSoup(r.text, "html.parser")

    all_job = html.find("ul", class_="sojob-list").find_all("li")

    for date in all_job:

    name = date.find("a", target="_blank").text.strip()

    area = date.find("a", class_="area").text

    salary = date.find("span", class_="text-warning").text

    url = date.find("a", class_="area")["href"]

    edu = date.find("span", class_="edu").text

    result["jobname"].append(name)

    result["area"].append(area)

    result["salary"].append(salary)

    result["url"].append(url)

    result["edu"].append(edu)

    df = pd.DataFrame(result)

    df.to_csv("shenzhen_Zhaopin.csv", encoding="utf_8_sig")

    PS:如遇到解决不了问题的小伙伴可以加点击下方链接自行获取

    python免费学习资料以及群交流解答点击即可加入