Python Selenium爬取数据

发表于:2016-12-22 14:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:风雨byt    来源:51Testing软件测试网采编

  最近公司有一项爬取数据的工作,借鉴以往的代码将爬虫重新更新并整理
  将现有爬虫分成几部分
  0.文件读取器
  其实文件读取和4中的文件存储是在一个部分的
  这里简单介绍下xls的读取
def deal_xls_col(name,sheet_name):
body = xlrd.open_workbook(name)
try:
sh = body.sheet_by_name(sheet_name)
except:
print "EORR"
return sh.col_values(0)格式请忽略
  这里读取了一竖行的xls的数据
  返回的格式为list
  1.总调度器
  这里主要是写逻辑,及0234的顺序。
  2.网页下载器
  网页下载器主要是来模拟浏览器访问对应url
  一个简单的例子
class HtmlDownloader(object):
def download(self,url):
if url is None:
return None
response = urllib2.urlopen(url,timeout=300)
if response.getcode() != 200:
return None
return response.read()
  例子只是去访问url并没有对cookie等相关限制信息做处理(需要请自行添加)
  3.网页分析器
  网页分析器其实就是来处理下载器返回的html的源码,比如用selenium来处理的话则有
  company_info_text = driver.find_element_by_class_name('company_info_text')
  company_text = driver.find_element_by_class_name('row b-c-white company-content')
  就是用selenium的一些方法来获取你需要的数据而已
  4.文件存储器
  这里以xls为例:
def creat_xls_6(xls_name):
styleBoldRed = xlwt.easyxf('font:color-index red, bold on')
headerStye = styleBoldRed    wb = xlwt.Workbook()
ws = wb.add_sheet(xls_name)
ws.write(0, 0, "name", headerStye)
ws.write(0, 1, "oper_name", headerStye)
ws.write(0, 2, "start_date", headerStye)
ws.write(0, 3, "xfsSearchStatus", headerStye)
wb.save(xls_name)
  创建xls表格
def insert_xls_6(xls_name,id, name, oper_name, start_date,xfsSearchStatus):
oldWb = xlrd.open_workbook(xls_name)
newWb = copy(oldWb)
newWs = newWb.get_sheet(0)
newWs.write(id, 0, name)
newWs.write(id, 1, oper_name)
newWs.write(id, 2, start_date)
newWs.write(id, 3, xfsSearchStatus)
newWb.save(xls_name)
  插入数据到表格
  这里面没有什么高深的秘密,只要你封装好自己的函数就好了
  上面的例子还不是最好的版本,因为每次使用都要重新修改,应该传入一个数据来代替那些变量,这样就可以适配各种数据的表格创建和添加了
  还有要说的就是:一些网站会限制你爬取数据,但是大多数网站都是友好的,但是这并不表示你可以肆无忌惮的毫无限制的去爬取。爬取的时间最好设置成晚上或者。。。。
  还有就是不要对目标网站造成不必要的‘伤害’。
  爬虫并不难,且行且珍惜!
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号