Python爬取豆瓣top250书籍(beautifulsoup法)
库需求
- requests(对网站发起请求)
- beautifulsoup(提取html信息)
- re(正则表达式)
- fake_useragent(生成假的请求头)
- xlwt(处理excel文档)
准备
打开豆瓣Top250书籍网站https://book.douban.com/top250,观察其html特点,找到储存书本信息的位置。
代码
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import re
import xlwt
ua=UserAgent()#生成假的请求头def getBooks(page):if page==0:url='https://book.douban.com/top250'else:url='https://book.douban.com/top250'+'?start='+str(page*25) #根据top250的网站url特点进行循环构造try:user_agent = ua.randomres = requests.get(url,headers={'User-Agent': user_agent})#利用假的请求头进行请求,以提高爬虫成功率html=res.textres.raise_for_status() # 如果返回的状态码不是200, 则抛出异常;res.encoding = res.apparent_encoding # 判断网页的编码格式, 便于respons.text知道如何解码;except Exception as e:print("爬取错误")html=res.textreturn htmldef processHtml(html):soup=BeautifulSoup(html,"html.parser")return soupdef getTitle(soup):lists=soup.find_all('div',class_="pl2")#找到储存书籍标题的部分titles=[]for item in lists:url=item.find('a').get('title')titles.append(url)#在列表的尾部添加一个元素,达到扩充列表的目的return titles#返回主页每一本书对应的题目def getUrls(soup):lists=soup.find_all('div',class_="pl2")urls=[]for item in lists:url=item.find('a').get('href')#寻找每一本书对应的网址urls.append(url)#在列表的尾部添加一个元素,达到扩充列表的目的return urls#返回主页每一本书对应的网址def getBasicMessage(soup):lists=soup.find_all('p',class_="pl")messages=[]for item in lists:message=item.string #只提取字符串部分,滤去标签messages.append(message)return messagesdef getStars(soup):lists=soup.find_all('span',class_="rating_nums")stars=[]for item in lists:star=float(item.string)#只提取字符串,并将评分转化为浮点数形式stars.append(star)return starsdef getPeopleNumbers(soup):lists=soup.find_all('span',class_="pl")peoples=[]for item in lists:people=item.textpeoples.append(people)num = []for i in peoples:r = re.findall(r"\d+\.?\d*",i)#提取字符串中数字的正则表达式num.append(int(r[0]))#将字符串转化为整数return numif __name__ == '__main__':book=xlwt.Workbook(encoding='utf-8')#设置文档的编码格式为utf-8sheet=book.add_sheet('豆瓣图书Top250')#建立excel工作簿sheet.write(0,0,'名称')#在excel中写入标题sheet.write(0,1,'网址')sheet.write(0,2,'基本信息')sheet.write(0,3,'评分')sheet.write(0,4,'人数')for i in range (0,10):#爬取十个页面(top1-top250)print('爬取第%d页的数据'%(i+1))html=getBooks(i)soup=processHtml(html)list1=getTitle(soup)list2=getUrls(soup)list3=getBasicMessage(soup)list4=getStars(soup)list5=getPeopleNumbers(soup)for n in range (0,25):#将每个页面中每一本书的信息写入excel中print('爬取第%d本书'%(i*25+n+1))sheet.write(i*25+n+1,0,list1[n])sheet.write(i*25+n+1,1,list2[n])sheet.write(i*25+n+1,2,list3[n])sheet.write(i*25+n+1,3,list4[n])sheet.write(i*25+n+1,4,list5[n])book.save(u'豆瓣最受欢迎的250本书.xls')#保存文件,注意不能是xlsxprint("爬取完毕")
效果
Python爬取豆瓣top250书籍(beautifulsoup法)相关推荐
- Python爬取豆瓣Top250电影中2000年后上映的影片信息
Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...
- Python爬取豆瓣Top250电影可见资料并保存为excel形式
Python爬取豆瓣Top250电影可见资料并保存为excel形式 利用requests第三方库实现网页的元素爬取,再使用openpyxl库进行信息的录入. 具体思路 1.分析网页的headers. ...
- python爬取豆瓣TOP250生成Excel表格例子最新
一 确定爬取网站 因为初学,所以按照网上的教程爬取豆瓣TOP250的网站.网址: https://movie.douban.com/top250 二 编写爬虫程序 详细过程就不再一 一讲解,可以看代码 ...
- python爬取豆瓣top250信息并存入数据库中 | sqlite3
文章目录 代码: 遇到的问题: 1.关于数据库表格中出现:NBSP 2. 为什么HTML字段中会出现&NBSP? 3.java.io.IOException: 不能删除数据库文件 4. 关于d ...
- Python爬取豆瓣Top250电影排名
# -*- codeing = utf-8 -*- # @Time: 2021/12/27 14:30 # @Author: 买欣怡 # @File: 7. spider-豆瓣.py # @Softw ...
- Python爬取豆瓣Top250的电影
流程图如下: 爬取网页-解析网页-存储数据到Excel和数据库中 源代码如下: 如果被豆瓣封Ip(一般被封第二天就解封了),可以自己设置代理Ip,或者自己登录账号后将Cookie放到header中. ...
- python爬取豆瓣高分书籍信息(request+xpath)
复习了xpath,感觉还是熟悉的感觉.上次爬了微博爬了贴吧,这次就用xpath爬个豆瓣图书数据,作为学习时间序列的数据吧! 面向对象编程爬取 1.把自己要做的事情分类 #获取url的规律组成url_l ...
- python爬取豆瓣TOP250电影
按照小甲鱼的爬虫教程,再自己修改了一部分. 废话不多说,直接贴代码 import requests from bs4 import BeautifulSoup import redef open_ur ...
- python爬取豆瓣短评_Python爬取豆瓣指定书籍的短评
Python爬取豆瓣指定书籍的短评 #!/usr/bin/python # coding=utf-8 import re import sys import time import random im ...
- [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息
这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...
最新文章
- 多gpu训练梯度如何计算,求和是否要求平均
- LayerDate渲染多个class出现闪现问题的解决
- 8条腾讯的产品管理方式
- python多线程加锁异步处理装饰器
- java ssh 和mvc_[转]JAVA三大框架SSH和MVC
- python分割字符串输出_python字符串分割
- 为什么百度查到的ip地址和ipconfig查到的不同;详解公网Ip和私网ip; 网络分类ABC类;
- 百度EasyDL深度学习实战营,免费教你转型AI工程师!
- ffice 2016 文件运行excel的数据透视表中的数据切片器的时候自动关闭
- 油猴脚本Tampermonkey初体验
- 普通摄像头游戏——飞翔
- H3C 100F防火墙限速
- android+gps+定位+缓存,Android GPS和Network定位
- JAVA优秀开源框架收集
- UE编辑器加入鼠标右键
- 最全SSH命令 - 11种用法
- 决策树:ID3C4.5cart算法(从原理到实现-小白教程超详细)
- Matlab 统计不同元素个数
- 《AngularJS深度剖析与最佳实践》一2.12 单元测试
- 平面设计常见的配色方案及色标
热门文章
- 两个网段计算机如何共享打印机,不同网段的打印机共享怎么连接?具体步骤
- 阿里行癫分享“从技术支撑业务、技术赋能业务,到技术创建新商业”
- html科学计算器,很剽悍的在线科学计算器
- MT管理系去弹窗【失败】
- 微信小程序-canvas 2d带动画的半圆形刻度进度条
- App Store Connect 等待协议
- Android 阶段性开发学习知识点(自用)
- MyEclipse断点无效
- CDH集群更换ip,主机名
- 解决安装 Bun 之后出现 zsh compinit: insecure directories, run compaudit for list. Ignore insecure directorie