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

python得到与处理结果怎么保存到excelpython爬取数据保存到Excel中

1#-*-conding:utf-8-*-23#1.两页的内容4#2.抓取每页title和URL5#3.根据title创建文件,发送URL请求,

1 #-*- conding:utf-8 -*-

2

3 #1.两页的内容

4 #2.抓取每页title和URL

5 #3.根据title创建文件,发送URL请求,提取数据

6 importrequests7 from lxml importetree8 importtime, random, xlwt9

10

11 #专家委员会成员的xpath("//tbody//tr[@height="29"]’)

12

13 classDoc_spider(object):14

15 def __init__(self):16 self.base_url = "http://www.bjmda.com"

17 self.url = "http://www.bjmda.com/Aboutus/ShowClass.asp?ClassID=12&page={}"

18 self.headers ={19 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"}20

21 defget_request(self, url):22 """发送请求,返回html"""

23 response = requests.get(url, headers=self.headers).content.decode("gbk")24 #time.sleep(random.random())

25 html =etree.HTML(response)26 returnhtml27

28 defparse_page_html(self, html, url):29 """提取列表页的专家委员会title和URL"""

30

31 url_lists = html.xpath("//tr/td[2]/a[2]/@href")[1:]32 temp_lists = html.xpath("//tr/td[2]/a[2]/text()")[1:]33 title_lists = [title.rstrip() for title intemp_lists]34

35 urls =[]36 titles =[]37

38 for i inrange(len(title_lists)):39 url = self.base_url +url_lists[i]40 title =title_lists[i]41 urls.append(url)42 titles.append(title)43

44 returnurls, titles45

46 defparse_detail(self, html):47 """详细页的提取数据,返回每组列表信息"""

48

49 lists = html.xpath("//td[@id="fontzoom"]//tr")50 content_list =[]51 for list inlists:52 contents = list.xpath(".//td//text()")53 new =[]54 for i incontents:55 new.append("".join(i.split()))56 content_list.append(new)57

58 returncontent_list59

60 defsave_excel(self, sheet_name, contents, worksheet, workbook):61 """保存数据到Excel"""

62

63 #创建一个workbook 设置编码

64 #workbook = xlwt.Workbook()

65 #创建一个worksheet

66 #worksheet = workbook.add_sheet(sheet_name)

67

68 try:69

70 for i inrange(len(contents)):71 if len(contents[i+1])>1:72 content_list = contents[i + 1]73

74 #写入excel

75 #参数对应 行, 列, 值

76 worksheet.write(i, 0, label=content_list[0])77 worksheet.write(i, 1, label=content_list[1])78 worksheet.write(i, 2, label=content_list[2])79 if len(contents[i+1])>3:80 worksheet.write(i, 3, label=content_list[3])81

82 #保存

83 #workbook.save(sheet_name + ".xls")

84 #time.sleep(0.1)

85 except:86 print(sheet_name,"保存OK")87

88 pass

89

90 defrun(self):91 #1.发送专家委员会列表页请求

92 urls = [self.url.format(i + 1) for i in range(2)]93

94 #创建一个workbook 设置编码

95 workbook =xlwt.Workbook()96

97 for url inurls:98 html =self.get_request(url)99 #2.提取委员会的title和URL

100 list_urls, titles =self.parse_page_html(html, url)101

102 for i inrange(len(list_urls)):103 url_detail =list_urls[i]104 #每个委员会的名称

105 title_detail =titles[i]106 #3.创建每个委员会文件,发送每个委员会的请求

107 html_detail =self.get_request(url_detail)108 #4.提取专家委员会详细页的内容

109 contents =self.parse_detail(html_detail)110 #保存每个委员会的所有人

111

112 #创建一个worksheet

113 worksheet =workbook.add_sheet(title_detail)114 self.save_excel(title_detail, contents,worksheet,workbook)115 workbook.save("专家委员会.xls")116 print("保存结束,请查看")117

118

119

120 if __name__ == "__main__":121 doc =Doc_spider()122 doc.run()



推荐阅读
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 该问题可能由守护进程配置不当引起,例如未识别的JVM选项或内存分配不足。建议检查并调整JVM参数,确保为对象堆预留足够的内存空间(至少1572864KB)。此外,还可以优化应用程序的内存使用,减少不必要的内存消耗。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 在HTML布局中,即使将 `top: 0%` 和 `left: 0%` 设置为元素的定位属性,浏览器中仍然会出现空白填充。这个问题通常与默认的浏览器样式、盒模型或父元素的定位方式有关。为了消除这些空白,可以考虑重置浏览器的默认样式,确保父元素的定位方式正确,并检查是否有其他CSS规则影响了元素的位置。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
author-avatar
Sunflower_琪琪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有