python爬取数据保存到Excel中
# -*- conding:utf-8 -*- # 1.两页的内容
# 2.抓取每页title和URL
# 3.根据title创建文件,发送URL请求,提取数据
import requests
from lxml import etree
import time, random, xlwt # 专家委员会成员的xpath(‘//tbody//tr[@height='29']’) class Doc_spider(object): def __init__(self):
self.base_url = 'http://www.bjmda.com'
self.url = 'http://www.bjmda.com/Aboutus/ShowClass.asp?ClassID=12&page={}'
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'} def get_request(self, url):
'''发送请求,返回html'''
response = requests.get(url, headers=self.headers).content.decode('gbk')
# time.sleep(random.random())
html = etree.HTML(response)
return html def parse_page_html(self, html, url):
'''提取列表页的专家委员会title和URL''' url_lists = html.xpath('//tr/td[2]/a[2]/@href')[1:]
temp_lists = html.xpath('//tr/td[2]/a[2]/text()')[1:]
title_lists = [title.rstrip() for title in temp_lists] urls = []
titles = [] for i in range(len(title_lists)):
url = self.base_url + url_lists[i]
title = title_lists[i]
urls.append(url)
titles.append(title) return urls, titles def parse_detail(self, html):
'''详细页的提取数据,返回每组列表信息''' lists = html.xpath("//td[@id='fontzoom']//tr")
content_list = []
for list in lists:
contents = list.xpath('.//td//text()')
new = []
for i in contents:
new.append(''.join(i.split()))
content_list.append(new) return content_list def save_excel(self, sheet_name, contents, worksheet, workbook):
'''保存数据到Excel''' # 创建一个workbook 设置编码
#workbook = xlwt.Workbook()
# 创建一个worksheet
#worksheet = workbook.add_sheet(sheet_name) try: for i in range(len(contents)):
if len(contents[i+1])>1:
content_list = contents[i + 1] # 写入excel
# 参数对应 行, 列, 值
worksheet.write(i, 0, label=content_list[0])
worksheet.write(i, 1, label=content_list[1])
worksheet.write(i, 2, label=content_list[2])
if len(contents[i+1])>3:
worksheet.write(i, 3, label=content_list[3]) # 保存
#workbook.save(sheet_name + '.xls')
# time.sleep(0.1)
except:
print(sheet_name,'保存OK') pass def run(self):
# 1.发送专家委员会列表页请求
urls = [self.url.format(i + 1) for i in range(2)] # 创建一个workbook 设置编码
workbook = xlwt.Workbook() for url in urls:
html = self.get_request(url)
# 2.提取委员会的title和URL
list_urls, titles = self.parse_page_html(html, url) for i in range(len(list_urls)):
url_detail = list_urls[i]
# 每个委员会的名称
title_detail = titles[i]
# 3.创建每个委员会文件,发送每个委员会的请求
html_detail = self.get_request(url_detail)
# 4.提取专家委员会详细页的内容
contents = self.parse_detail(html_detail)
# 保存每个委员会的所有人 # 创建一个worksheet
worksheet = workbook.add_sheet(title_detail)
self.save_excel(title_detail, contents,worksheet,workbook)
workbook.save('专家委员会.xls')
print('保存结束,请查看') if __name__ == '__main__':
doc = Doc_spider()
doc.run()
这个小程序可以爬取该网站的医生专家的信息,分不同的专科保存到同一个Excel中。

# -*- conding:utf-8 -*- import xlwt # 创建工作workbook
workbook = xlwt.Workbook() # 创建工作表worksheet,填入表名
worksheet = workbook.add_sheet('表名') # 在表中写入相应的数据
worksheet.write(0, 0, 'hello world')
worksheet.write(1, 1, '你好') # 保存表
workbook.save('hello.xls')
python爬取数据保存到Excel中的更多相关文章
- 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中
学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...
- python之scrapy爬取数据保存到mysql数据库
1.创建工程 scrapy startproject tencent 2.创建项目 scrapy genspider mahuateng 3.既然保存到数据库,自然要安装pymsql pip inst ...
- 关于爬取数据保存到json文件,中文是unicode解决方式
流程: 爬取的数据处理为列表,包含字典.里面包含中文, 经过json.dumps,保存到json文件中, 发现里面的中文显示未\ue768这样子 查阅资料发现,json.dumps 有一个参数.ens ...
- 将爬取的数据保存到mysql中
为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...
- 1.scrapy爬取的数据保存到es中
先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index. from datetime import datetime fr ...
- Excel文件数据保存到SQL中
1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...
- c# 抓取和解析网页,并将table数据保存到datatable中(其他格式也可以,自己去修改)
使用HtmlAgilityPack 基础请参考这篇博客:https://www.cnblogs.com/fishyues/p/10232822.html 下面是根据抓取的页面string 来解析并保存 ...
- Sql数据保存到Excel文件中
public string ExportExcel( DataSet ds,string saveFileName) { try { if (ds == null) return "数据库为 ...
- 爬取伯乐在线文章(四)将爬取结果保存到MySQL
Item Pipeline 当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item. 每个Item Pipeline ...
随机推荐
- bzoj 1653: [Usaco2006 Feb]Backward Digit Sums【dfs】
每个ai在最后sum中的值是本身值乘上组合数,按这个dfs一下即可 #include<iostream> #include<cstdio> using namespace st ...
- java 实现word文档在线预览
一.准备工具 1.通过第三方工具openoffice,将word.excel.ppt.txt等文件转换为pdf文件 下载地址:http://www.openoffice.org/download/in ...
- 数据据操作 tp5
数据库操作-DB类 学习手册 数据库配置 注意1:在TP里面,可以在模块下面单独的建立一个database.php配置文件,代表这个模块就使用配置的这个数据库 注意2:我们可以在config.php里 ...
- 区间DP UVA 11584 Partitioning by Palindromes
题目传送门 /* 题意:给一个字符串,划分成尽量少的回文串 区间DP:状态转移方程:dp[i] = min (dp[i], dp[j-1] + 1); dp[i] 表示前i个字符划分的最少回文串, 如 ...
- maven build过程中遇到的问题以及解决方案
(1)不支持泛型以及@Override 问题来源:使用了低版本的jdk,默认情况下maven使用的是jdk1.5的版本,而泛型和@Override是后期版本才有的,需要更改maven默认的jdk版本. ...
- Selenium Grid操作使用指南
一.实现串行多浏览器执行脚本1.启动selenium-server-standalonejava -jar selenium-server-standalone-2.44.0.jar2.脚本代码 fr ...
- python自动化--语言基础四模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
- Selenium IDE的第一个测试用例——路漫长。。。
一周时间过去了,断断续续学习selenium也有几个小时了:今天细想一下学习效率不高的原因在哪,总结出以下几点: 1.求“进”心切——总想一步到位,搭建好环境,开始动手写用例. 2.学习深度不够——同 ...
- Shell script之How to write
Write shell script: 1) Editor like vi or mcedi 2) Set execute permission for your script chmod perm ...
- RabbitMQ - Publisher的消息确认机制
queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consumer处理呢?毕竟对于 ...