python爬虫:利用正则表达式爬取豆瓣读书首页的book
2024-08-28 09:35:51
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")
最新文章
- OpenStack从入门到放弃
- Android Stduio 发生 Process &#39;command &#39;somePath:java.exe&#39;&#39; finished with non-zero exit value 2 异常的解决办法
- sql 的实用函数(包含日期函数、截取字符串函数)
- Errore Http 404.2
- 一款经典的jQuery slidizle 幻灯片
- ACM: HDU 5418 Victor and World - Floyd算法+dp状态压缩
- 通过案例对 spark streaming 透彻理解三板斧之一: spark streaming 另类实验
- java基本加密算法
- Luke 6:43-45
- HTML调用servlet(一)
- Java拾穗
- PHP之mysql笔记
- 五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时
- c#中Partial关键字的作用
- xmlplus 组件设计系列之六 - 下拉刷新
- (转)Ubuntu 12.04 中安装和配置 Java JDK
- Mysql数据库连接报错!1130:host XXX is not allowed to connect to this mysql server
- Java 生成 JNI 头文件
- easy-ui 中的事件触发 (tree)
- MACE移植要求
热门文章
- maven课程 项目管理利器-maven 3-1 maven常用的构建命令
- cf1059D. Nature Reserve(三分)
- WHRER条件里的数据类型必须和字段数据类型一致
- spring mvc踩坑记
- 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
- COGS 182. [USACO Jan07] 均衡队形
- php一个类引用另一个类的方法的写法
- C#自制png转ico图标工具
- P3391 【模板】文艺平衡树(Splay)
- javascript原生API总结