最近表哥让我帮他写个软件,定时爬取一个人才数据 站的信息,思路和方法很简单,不过过程中遇到的坑真的不少,今天对整个软件的开发过程做个记录。
站是 余姚人才 ,链接就不上了,百度第一个就是。
还是老样子,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,queuedef 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 listtdef 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进行处理,非常感谢!