1、问题描述:

爬取豆瓣读书首页的图书的名称、链接、作者、出版日期,并将爬取的数据存储到Excel表格Douban_I.xlsx中

2、思路分析:

发送请求--获取数据--解析数据--存储数据

1、目标网址:https://book.douban.com/

2、利用requests.get()方法向豆瓣读书首页发送请求,获取首页的HTML源代码

#目标网址
targetUrl = "https://book.douban.com/"
#发送请求,获取响应
response = requests.get(targetUrl).text

3、利用正则re.findall()解析出想要的信息: Name Url Author Date

#编译成正则表达式对象,便于复用该匹配模式
pattern = re.compile('<li.*?title="(.*?)".*?href="(.*?)".*?more-meta.*?author">(.*?)</span>.*?year">(.*?)</span>.*?</li>', re.S)
results = re.findall(pattern, response)

4、将数据存储到Excel表格中

workBook = xlwt.Workbook(encoding='utf-8') #创建Excel表,并确定编码方式
sheet = workBook.add_sheet("Douban_I")
headData = ["书名", "链接", "作者", "出版日期"] #表头信息
for colNum in range(len(headData)):
sheet.write(0, colNum, headData[colNum])
raw = 1
for book in results: #书籍信息:名称、链接、作者、出版日期
# name, url, author, date = book
for column in range(len(book)):
sheet.write(raw, column, book[column].strip())
raw += 1
workBook.save(".\Douban_I.xlsx")

3、效果展示

4、完整代码:

# -* coding: utf-8 *-
# author: wangshx6
# date: 2018-11-04
# description: 爬取豆瓣读书首页的图书的名称、链接、作者、出版日期,并将爬取的数据存储到Excel表格Douban_I.xlsx中 import requests
import re
import xlwt #目标网址
targetUrl = "https://book.douban.com/"
#发送请求,获取响应
response = requests.get(targetUrl).text ''' 利用正则表达式解析出关键内容: Name Url Author Date '''
#re.compile()是将正则字符串编译成正则表达式对象,便于复用该匹配模式
#re.S 多行匹配(换行)
pattern = re.compile('<li.*?title="(.*?)".*?href="(.*?)".*?more-meta.*?author">(.*?)</span>.*?year">(.*?)</span>.*?</li>', re.S)
results = re.findall(pattern, response) #将数据列表存储到Excel表格Douban_I.xlsx中
workBook = xlwt.Workbook(encoding='utf-8')
sheet = workBook.add_sheet("Douban_I")
headData = ["书名", "链接", "作者", "出版日期"] #表头
for colNum in range(len(headData)):
sheet.write(0, colNum, headData[colNum]) raw = 1
for book in results:
# name, url, author, date = book
for column in range(len(book)):
sheet.write(raw, column, book[column].strip())
raw += 1
workBook.save(".\Douban_I.xlsx")

最新文章

  1. OpenStack从入门到放弃
  2. Android Stduio 发生 Process &#39;command &#39;somePath:java.exe&#39;&#39; finished with non-zero exit value 2 异常的解决办法
  3. sql 的实用函数(包含日期函数、截取字符串函数)
  4. Errore Http 404.2
  5. 一款经典的jQuery slidizle 幻灯片
  6. ACM: HDU 5418 Victor and World - Floyd算法+dp状态压缩
  7. 通过案例对 spark streaming 透彻理解三板斧之一: spark streaming 另类实验
  8. java基本加密算法
  9. Luke 6:43-45
  10. HTML调用servlet(一)
  11. Java拾穗
  12. PHP之mysql笔记
  13. 五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时
  14. c#中Partial关键字的作用
  15. xmlplus 组件设计系列之六 - 下拉刷新
  16. (转)Ubuntu 12.04 中安装和配置 Java JDK
  17. Mysql数据库连接报错!1130:host XXX is not allowed to connect to this mysql server
  18. Java 生成 JNI 头文件
  19. easy-ui 中的事件触发 (tree)
  20. MACE移植要求

热门文章

  1. maven课程 项目管理利器-maven 3-1 maven常用的构建命令
  2. cf1059D. Nature Reserve(三分)
  3. WHRER条件里的数据类型必须和字段数据类型一致
  4. spring mvc踩坑记
  5. org.springframework.beans.MethodInvocationException: Property &#39;cacheManager&#39; threw exception; nested exception is org.apache.shiro.cache.CacheException: net.sf.ehcache.CacheException: Caches cannot be
  6. COGS 182. [USACO Jan07] 均衡队形
  7. php一个类引用另一个类的方法的写法
  8. C#自制png转ico图标工具
  9. P3391 【模板】文艺平衡树(Splay)
  10. javascript原生API总结