自学Python的时候,在网上看见一篇比较简单的爬虫小项目,于是自己便也想跟着别人的代码来学一下.
看着这位博主的代码敲的以下代码,基本上都一致.
源代码网站: https://blog.csdn.net/markleacode/article/details/65639947
第一部分:根据URL进行数据的爬取
# -*-coding:utf-8-*-
import urllib2
import sys
from bs4 import BeautifulSoup
# 写入Excel表需要使用的库
from openpyxl import Workbook
reload(sys)
sys.setdefaultencoding('utf-8') # 设置系统默认编码
print sys.version # 打印当前版本信息
sys.setdefaultencoding('utf-8')
# 为了方便翻页将网址代码分成两部分
urlstart = 'http://my.yingjiesheng.com/index.php/personal/xjhinfo.htm/?page='
urlend = '&cid=&city=21&word=&province=0&schoolid=&sdate=&hyid=0'
setSQLData = []
# 爬取数据 总页数64,为了练习,就取20页
for i in range(1, 11):
url = urlstart + str(i) + urlend
print '正在打印:' + url;
request = urllib2.urlopen(url)
html = request.read()
bs = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')
alllist1 = bs.find_all('tr', class_='bg0')
alllist2 = bs.find_all('tr', class_='bg1')
alllist = alllist1 + alllist2
# 对数据进行处理筛选
for contenttd in alllist:
month = contenttd.find('td', width='120').text
companyweb = contenttd.find('td', width='250').find('a').get('href')
if 'http' not in companyweb:
companyweb = 'http://my.yingjiesheng.com/' + str(companyweb)
companyName = contenttd.find('td', width='250').find('a').text
school = contenttd.find('td', width='250').next_sibling.next_sibling.text
classRoom = contenttd.find('td', width='250').next_sibling.next_sibling.next_sibling.next_sibling.text
row = [month, companyweb, companyName, school, classRoom]
setSQLData.append(row)#将每条数据再次写入列表
关于爬取数据这一块的代码的书写以及格式和逻辑都还需要继续优化,后边会边学边进行优化.
代码还有很多可优化之处.只做自己学习记录,大神请忽略(如果有可优化的地方,欢迎提出以方便新手的我学习)
第二部分:将爬取到的代码写入Excel文件
# 将数据写入Excel
wb = Workbook()
# 设置Excel文件名
dest_filename = 'UserInfoFile.xlsx'
# 新建一个表
ws1 = wb.active
# 设置表头
titleList = ['时间', '网址', '招聘企业', '学校', '地址']
for row in range(len(titleList)):
c = row + 1
ws1.cell(row=1, column=c, value=titleList[row])
# 填写表内容
for listIndex in range(len(setSQLData)):
ws1.append(setSQLData[listIndex])
wb.save(filename=dest_filename)
以上便是本次的代码和输出结果,有很多需要优化的地方,进行简单罗列一下
针对URL的请求,数据的获取,以及获取到数据之后的数据处理筛选,使用Python类库进行优化
以这些方法的功能进行函数封装,创建不用功能的函数进行相互调用来实现.和主函数调用,不同文件调用
Excel文件在写入的时候使用Python进行排版美化展示