一个人才数据 的爬虫软件

最近表哥让我帮他写个软件,定时爬取一个人才数据 站的信息,思路和方法很简单,不过过程中遇到的坑真的不少,今天对整个软件的开发过程做个记录。
站是 余姚人才 ,链接就不上了,百度第一个就是。
还是老样子,python+request+beautifulsoup4 三把斧,这个是整个软件的核心,
先写一个请求 页的函数

用到了request库,利用request.get() 方法向 站请求,然后return 站的文本信息,如果请求不成功则抛出异常。

然后写一个解析 页的结构的函数,利用的是beautifulsoup库,注意导入库的时候要从 bs4 中导入,如

先用Beautifulsoup(),将请求解析,用的是lxml解析器,这个解析器也需要安装,用命令
pip install lxml 。 如此一锅‘美味汤’就煲出来了,然后去分析一下 站的html源码,发现我们要爬去的内容的标签都是这样的

  • 宁波永强不锈钢制品有限公司
  • 所以我们要解析的标签名是 li ,类名是 seaList13 ,所以我们可以这样寻找我们要的内容,

    找出所有标签名为li , class名为 sealist13 的标签,注意这里要用 class_ ,不然会和Python关键字冲突。

    接下来的代码就设计到了具体的需求,这里就不细讲了,但是有几个要注意的地方要提一下。
    爬去的数据我要保存在一个txt文件中,因此设计到了文件的打开,一开始我用的是 open() 这个Python自带的方法,打开方式为 a+ (以可读可写的方式打开,如不存在则创建,读取时从第一行开始读取,从最后一行开始增加),编码格式为utf-8,但是发现这个方法并不好用,大概是因为从 站上爬取的内容是utf-8编码的,但是信息在python内部中交流的时候又是Unicode编码的,需要不停地进行encode和decode,相当的麻烦并且不易开发。
    不过题主发现有个库特别好用,codecs,是标准库中的,用codecs.open()打开文件不用转码,模块会自动的解编码(大概
    比如要以utf8 的方式打开一个txt,并逐行加入一个列表中

    这里我为了图省事用的 是 a+的方式打开文件,但是后来发现怎么也读取不进列表,改了半天bug都没找到问题,后来改成了 r 终于可以写进列表了,但是不知道原因,要是有大佬知道还请指点下。

    下面还有一个难点是gui的制作,毕竟是要做个别人看的,老在dos下看肯定不方便。

    import winsound
    winsoud.Beep(500,500)

    -coding:utf-8-

    from bs4 import BeautifulSoup
    import requests,codecs,urllib,sys
    import codecs
    from tkinter import *
    import time , datetime, winsound,queue

    def get(url):
    try:
    response = requests.get(url)
    return response.text
    except EOFError:
    raise ‘error’

    def makesoup(response):
    listt=[]
    soup = BeautifulSoup(response,’lxml’)
    soup = soup.find_all(attrs=’li’,class_=’seaList13’)
    for i in soup:
    listt.append(i.text)
    return listt

    def get_yao_xian_shi_de_(i):
    yi_cun_zai=[]
    yao_xian_shi_de_ = []

    def on_go():
    root = Tk()
    t = Text(root)
    t.pack()
    for i in range(1):
    xian_shi_wo = get_yao_xian_shi_de_(i)
    for j in xian_shi_wo:
    winsound.Beep(500, 500)
    t.insert(INSERT, j+’ ‘)
    t.insert(INSERT, str(time.ctime())+’nr’)
    t.mark_set(‘insert’, 1.0)
    t.update()
    time.sleep(0.1)
    t.mainloop()

    if name == ‘main‘:

    “`

    但是还有一步没做完,打包成exe文件,这个也折腾了我好久
    我用的是pyinstaller,也是一个库,可以直接pip install pyinstaller
    然后进入到python35/script 文件夹中,进入commend模式,执行语句:
    python pyinstaller.exe 你要打包的文件地址
    还有一些控制语句 -F表示 将所有东西都打包成一个.exe 文件,-w表示不显示dos框。
    如我要打包的程序是yuyao.py
    我的语句就是 python pyinstaller.exe -F -w yuyao.py
    这样一个exe文件就生成了

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览211383 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年5月6日
下一篇 2017年5月6日

相关推荐