2022-04-16 爬虫day4 <解析网页-存储数据>

如题所述

第1个回答  2022-06-24
import requests

import csv

from bs4 import BeautifulSoup

# 设置列表,用以存储每本书籍的信息

data_list = []

# 设置页码 page_number

page_number = 1

# while 循环的条件设置为 page_number 的值是否小于 4

while page_number < 4:

    # 设置要请求的网页链接

    url = 'https://wp.forchange.cn/resources/page/' + str(page_number)

    # 请求网页

    books_list_res = requests.get(url)

    # 解析请求到的网页内容

    bs = BeautifulSoup(books_list_res.text, 'html.parser')

    # 搜索网页中所有包含书籍名和书籍链接的 Tag

    href_list = bs.find_all('a', class_='post-title')

    # 使用 for 循环遍历搜索结果

    for href in href_list:

        # 创建字典,用以存储书籍信息

        info_dict = {}

        # 提取书籍名

        info_dict['书名'] = href.text

        # 提取书籍链接

        book_url = href['href']

        # 通过书籍链接请求书籍详情页

        book_list_res = requests.get(book_url)

        # 解析书籍详情页的内容

        new_bs = BeautifulSoup(book_list_res.text, 'html.parser')

        # 搜索网页中所有包含书籍各项信息的 Tag

        info_list = new_bs.find('div', class_='res-attrs').find_all('dl')

        # 使用 for 循环遍历搜索结果

        for info in info_list:

            # 提取信息的提示项

            key = info.find('dt').text[:-2]

            # 提取信息的内容

            value = info.find('dd').text

            # 将信息添加到字典中

            info_dict[key] = value

        # 打印书籍的信息

        print(info_dict)

        # 存储每本书籍的信息

        data_list.append(info_dict)

    # 页码 page_number 自增

    page_number += 1

# 新建 csv 文件存储书籍信息

with open('books.csv', 'w') as f:

    # 将文件对象转换成 DictWriter 对象

    writer = csv.DictWriter(f, fieldnames=['书名', '作者', '出版社', 'ISBN', '页数', '出版年', '定价'])

    # 写入表头与数据

    writer.writeheader()

    writer.writerows(data_list)

“总是觉得想象中的美好生活就要到了,总是期待着

但实际上,现在经历的每一件事、体会的每一种情感,

都是我的生活。”

爬虫好像真的不简单,但还是希望我可以学会!可以靠自己做出一个个小程序!
相似回答