当前位置:   article > 正文

Python爬虫,爬取豆瓣读书top250

Python爬虫,爬取豆瓣读书top250

目录

概述

一、导入相关库

二、代码编写

2.1获取当前页面的数据

2.2获取书籍数据

2.3开始爬取

2.4运行结果

三、完整代码

概述

        简单的用python的一些库爬取豆瓣读书top250的书籍。

一、导入相关库

  1. import requests
  2. import re
  3. import time

二、代码编写

2.1获取当前页面的数据

  1. ''' 获取一页的数据 '''
  2. def get_one_page(url):
  3. #添加User-Agent
  4. headers={
  5. 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0'
  6. }
  7. #发送请求,并且将请求头加上
  8. response = requests.get(url,headers=headers)
  9. #获取当前页面的编码方式并设置
  10. response.encoding = response.apparent_encoding
  11. #获取页面内容
  12. html = response.text
  13. return html

2.2获取书籍数据

  1. ''' 获取书籍 '''
  2. def get_books(html,book_list):
  3. #获取所有书籍
  4. books_all=re.findall(r'<tr class="item">(.*?)</tr>',html,re.S)
  5. for book_one in books_all:
  6. #处理所需数据
  7. #书名
  8. book_Name=re.search(r'title="(.*?)"',book_one,re.S).group(1)
  9. #作者名
  10. book_author=re.search(r'<p class="pl">(.*?) /',book_one,re.S).group(1)
  11. #评分
  12. book_rating_nums=re.search(r'class="rating_nums">(.*?)</span>',book_one,re.S).group(1)
  13. #简介
  14. #获取到的简介可能为空
  15. book_inq=re.search(r'<span class="inq">(.*?)</span>',book_one,re.S)
  16. #判断是否为空
  17. if(book_inq!=None):
  18. book_inq=book_inq.group(1)
  19. else:
  20. book_inq="暂无简介"
  21. book={"书名":book_Name,"作者":book_author,"评分":book_rating_nums,"简介":book_inq}
  22. #创建一个列表存储书籍
  23. book_list.append(book)

2.3开始爬取

  1. #初始页面
  2. base_url="https://book.douban.com/top250"
  3. #存放每一本书籍信息
  4. book_list=[]
  5. #遍历所有页面
  6. for i in range(0,250,25):
  7. url=base_url+"?start="+str(i)
  8. print(f"正在爬取:{url}")
  9. html = get_one_page(url)
  10. get_books(html,book_list)
  11. time.sleep(2)
  12. for book in book_list:
  13. print(book)

2.4运行结果

三、完整代码

  1. import requests
  2. import re
  3. import time
  4. ''' 获取一页的数据 '''
  5. def get_one_page(url):
  6. #添加User-Agent
  7. headers={
  8. 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0'
  9. }
  10. #发送请求,并且将请求头加上
  11. response = requests.get(url,headers=headers)
  12. #获取当前页面的编码方式并设置
  13. response.encoding = response.apparent_encoding
  14. #获取页面内容
  15. html = response.text
  16. return html
  17. ''' 获取书籍 '''
  18. def get_books(html,book_list):
  19. #获取所有书籍
  20. books_all=re.findall(r'<tr class="item">(.*?)</tr>',html,re.S)
  21. for book_one in books_all:
  22. #处理所需数据
  23. #书名
  24. book_Name=re.search(r'title="(.*?)"',book_one,re.S).group(1)
  25. #作者名
  26. book_author=re.search(r'<p class="pl">(.*?) /',book_one,re.S).group(1)
  27. #评分
  28. book_rating_nums=re.search(r'class="rating_nums">(.*?)</span>',book_one,re.S).group(1)
  29. #简介
  30. #获取到的简介可能为空
  31. book_inq=re.search(r'<span class="inq">(.*?)</span>',book_one,re.S)
  32. #判断是否为空
  33. if(book_inq!=None):
  34. book_inq=book_inq.group(1)
  35. else:
  36. book_inq="暂无简介"
  37. book={"书名":book_Name,"作者":book_author,"评分":book_rating_nums,"简介":book_inq}
  38. #创建一个列表存储书籍
  39. book_list.append(book)
  40. #初始页面
  41. base_url="https://book.douban.com/top250"
  42. #存放每一本书籍信息
  43. book_list=[]
  44. #遍历所有页面
  45. for i in range(0,250,25):
  46. url=base_url+"?start="+str(i)
  47. print(f"正在爬取:{url}")
  48. html = get_one_page(url)
  49. get_books(html,book_list)
  50. time.sleep(2)
  51. for book in book_list:
  52. print(book)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/488149
推荐阅读
相关标签
  

闽ICP备14008679号