爬虫豆瓣读书top250,保存为本地csv文件,可用excel查看(具体步骤和容易遇到的坑)

1、目的
将豆瓣读书top250排名保存到本地excel,包括书名,作者,评分,评论数,简评,网址。用到了requests,res,BeautifulSoup,csv库。
2、分析网址
打开豆瓣读书网址:https://book.douban.com/top250
第一页:https://book.douban.com/top250
第二页:https://book.douban.com/top250?start=25
第三页:https://book.douban.com/top250?start=50

第十页:https://book.douban.com/top250?start=225
把第一页的网址改为:https://book.douban.com/top250?start=0
找到规律,通过修改最后的数字改变网址,先定义一个函数获取所有网址,并存入列表。

def get_all_url():      #定义获取所有网址的函数
    urls = []
    for i in range(0, 250, 25):
        url_1 = 'https://book.douban.com/top250?start1={}'.format(i)
        urls.append(url_1)
    return urls

返回urls列表
需要爬取的所有网址
3、分析网站内容
打开任一网址,右击书名–检查
在这里插入图片描述
打开后显示:
在这里插入图片描述
通过观察其他书名,可以通过div class = pl2定位。
先导入需要的库文件,使用requests获取网页内容,使用beautifulsoup解析网页。header要写,模拟为浏览器,不然可能返回空值。

import requests   #导入requests库,用于获取网页数据
import re         #导入re库,用于正则表达式筛选数据
from bs4 import BeautifulSoup  #导入库,用于解析网页
import csv        #导入库,用于创建csv文件并写入数据

url_2 = 'https://book.douban.com/top250?start=50'
header = {
   'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like\
                Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0\
                .3 Mobile/15E148 Safari/604.1'}
res = requests.get(url_2, headers=header)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text, 'lxml')

data_name = soup.find_all('div', class_='pl2')[1]
names = data_name.a.get('title')
href = data_name.a.get('href')

打印测试结果,返回书名和网址:
在这里插入图片描述
相同的方法,分别定位到作者,评分,

data_author = soup.find_all('p', class_='pl')[1]
authors = data_author.get_text().split('/')[0]

data_score = soup.find_all('span', class_='rating_nums')[1]
scores = data_score.get_text()

data_msg = soup.find_all('span', class_='pl')[1].get_text()
msgs = re.findall('\d+', data_msg)[0]

打印结果测试:

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是Python爬取豆瓣Top250电影名称和评分并存储为CSV文件的代码: ```python import requests from bs4 import BeautifulSoup import csv # 定义请求头部信息 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 定义要爬取的URL地址 url = 'https://movie.douban.com/top250' # 发送请求,获取HTML页面 response = requests.get(url, headers=headers) # 解析HTML页面 soup = BeautifulSoup(response.text, 'html.parser') # 定位电影列表 movie_list = soup.find('ol', class_='grid_view') # 定义空列表存储电影名称和评分 movies = [] # 遍历电影列表,获取每部电影的名称和评分 for movie_li in movie_list.find_all('li'): # 获取电影名称 movie_name = movie_li.find('span', class_='title').text # 获取电影评分 movie_score = movie_li.find('span', class_='rating_num').text # 将电影名称和评分添加到列表中 movies.append([movie_name, movie_score]) # 将数据存储到CSV文件中 with open('top250_movies.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f) # 写入表头 writer.writerow(['电影名称', '评分']) # 写入数据 writer.writerows(movies) print('数据已存储到CSV文件中!') ``` 在代码中,我们首先定义了请求头部信息和要爬取的URL地址,并使用requests库发送请求获取HTML页面。然后,使用BeautifulSoup库解析HTML页面,定位电影列表,并遍历电影列表获取每部电影的名称和评分。最后,将数据存储到CSV文件中。 注意事项: 1. 可能需要安装BeautifulSoup库和csv库,使用pip install beautifulsoup4 和 pip install csv 进行安装。 2. 在存储CSV文件时,需要指定编码为utf-8,并设置newline='',否则可能会出现换行符问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值