热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python爬取数据写入文件_使用Python爬取网页数据,并写入Excel文件

自学Python的时候,在网上看见一篇比较简单的爬虫小项目,于是自己便也想跟着别人的代码来学一下.看着这位博主的代码敲的以下代码,基本上都一致.源代码网站:https:blog.c

自学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进行排版美化展示



推荐阅读
author-avatar
wuyanting67412
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有