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

xlwt在爬虫中的实战(爬取豆瓣图书)

爬虫相关知识请阅读我的其他文章importreimportxlwtimportrequestsfrombs4importBeautifulSoupdefgetHtml(ur

爬虫相关知识请阅读我的其他文章

import re
import xlwt
import requests
from bs4 import BeautifulSoupdef getHtml(url):# 构造请求头headers &#61; {&#39;User-Agent&#39;: &#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0&#39;}page &#61; requests.get(url, headers&#61;headers)html &#61;page.textreturn htmlif __name__&#61;&#61;&#39;__main__&#39;:# 创建workbookWorkbook &#61; xlwt.Workbook()# 创建worksheetsheet &#61; Workbook.add_sheet(&#39;豆瓣图书Top250&#39;, cell_overwrite_ok&#61;True)sheet.write(0,0,&#39;书名&#39;)sheet.write(0,1,&#39;作者&#39;)sheet.write(0,2,&#39;译者&#39;)sheet.write(0,3,&#39;出版单位&#39;)sheet.write(0,4,&#39;出版时间&#39;)sheet.write(0,5,&#39;定价&#39;)sheet.write(0,6,&#39;豆瓣评分&#39;)sheet.write(0,7,&#39;评价人数&#39;)sheet.write(0,8,&#39;一句话&#39;)i &#61; 1j &#61; 1k &#61; 1m &#61; 1# 循环翻页for page in range(0,250,25):url &#61; &#39;https://book.douban.com/top250?start&#61;{0}&#39;.format(page)html &#61; getHtml(url)# beautiful对象Soup &#61; BeautifulSoup(html,&#39;html.parser&#39;)names &#61; Soup.find_all(&#39;div&#39;,class_ &#61; &#39;pl2&#39;)for name in names:book &#61; name.find(&#39;a&#39;)book &#61; book.text.strip()book &#61; book.replace(&#39; &#39;,&#39;&#39;)sheet.write(i,0,book)i &#43;&#61; 1Infos &#61; Soup.find_all(&#39;p&#39;,class_ &#61; &#39;pl&#39;)for Info in Infos:r &#61; 1authorinfo &#61; Info.textauthors &#61; authorinfo.split(&#39;/&#39;)if len(authors) < 4:sheet.write(j,1,authors[0])sheet.write(j,2,authors[1])sheet.write(j,3,authors[2])j &#43;&#61; 1continuesheet.write(j,1,authors[0])if authorinfo.count(&#39;/&#39;) &#61;&#61; 4:sheet.write(j,2,authors[r])r &#43;&#61; 1sheet.write(j,3,authors[r])sheet.write(j,4,authors[r&#43;1])sheet.write(j,5,authors[r&#43;2])j &#43;&#61; 1rating_nums &#61; Soup.find_all(&#39;div&#39;,class_ &#61; &#39;star clearfix&#39;)for rating in rating_nums:star &#61; rating.find_all(&#39;span&#39;)sheet.write(k,6,star[1].text)reg &#61; r&#39;\d&#43;&#39;vote &#61; re.findall(reg,star[2].text)sheet.write(k,7,vote)k &#43;&#61; 1quotes &#61; Soup.find_all(&#39;p&#39;,class_ &#61; &#39;quote&#39;)for quote in quotes:sheet.write(m,8,quote.text)m &#43;&#61; 1Workbook.save(&#39;豆瓣图书Top250.xls&#39;)

在这里插入图片描述


推荐阅读
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • Microsoft即将发布WPF/E的CTP(Community Technology Preview)和SDK,标志着RIA(Rich Internet Application)技术的新里程碑。更多详情及下载链接请参见MSDN官方页面。 ... [详细]
  • 本文介绍了如何利用Selenium和Python通过执行JavaScript代码来控制网页中的滚动条,包括垂直和水平滚动条的控制,以及特定元素的聚焦技术。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文探讨了如何为Web浏览器(如Firefox)添加全局热键(例如媒体控制键),并详细说明了实现这一功能所需的步骤,包括可能需要的Firefox扩展和Greasemonkey脚本。 ... [详细]
author-avatar
无石笑_987
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有