爬取豆瓣Top250图书数据 焦点资讯
发布时间:2023-06-13 17:28:57 来源:博客园


【资料图】

爬取豆瓣Top250图书数据

项目的实现步骤1.项目结构2.获取网页数据3.提取网页中的关键信息4.保存数据1.项目结构

2.获取网页数据对应的网址为https://book.douban.com/top250

import requestsfrom bs4 import BeautifulSoup"""获取网页数据,解析数据,将相应的数据传出"""def get_page(url):    headers = {        "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) "                     "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 "                     "Mobile Safari/537.36 Edg/114.0.1823.43"    }    resp=requests.get(url,headers=headers)    soup=BeautifulSoup(resp.text,"html.parser")    return soup

3.提取网页中的关键信息获取传出的解析后的数据,获取对应的图片,书名,作者,价格,评价,简介

from geturlcocument.get_document import get_pageimport re# 初始数据pictures=[]names=[]authors=[]prices=[]scores=[]sums=[]def get_single():    # 网址地址    urls = [f"https://book.douban.com/top250?start={num}" for num in range(0,250,25)]    for url in urls:        # 获取对应的网页文本        text = get_page.get_page(url)        # 所有数据的集合        all_tr = text.find_all(name="tr", attrs={"class": "item"})        # 查找每个单项        for tr in all_tr:            # 数据类型:图片,书名,作者,价格,评分,简介            # 图片            picture = tr.find(name="img")            picture = picture.get("src")            # print(picture)            # 书名            div = tr.find(name="div", attrs={"class": "pl2"})            name = div.find("a").text            name = re.sub(r"\s+", "", name)            # 作者            author = tr.find(name="p", attrs={"class": "pl"}).text            author = author.split("/")[0]            # 价格            price = author.split("/")[-1]            price = re.sub(r"元", "", price)            # 评分            score = tr.find(name="span", attrs={"class": "rating_nums"}).text            try:                sum = tr.find(name="span", attrs={"class": "inq"}).text            except AttributeError:                sum = ""            pictures.append(picture)            names.append(name)            authors.append(author)            prices.append(price)            scores.append(score)            sums.append(sum)    data = {        "picture": pictures,        "name": names,        "author": authors,        "price": prices,        "score": scores,        "sum": sums    }    return data

将获取的数据存入到字典中,将数据传出,使用re库对相应的数据进行处理,运用异常检错4.保存数据获取传出的字典类型的数据,将数据存入到pandas的DataFrame类型中

from geturlcocument.get_single_docuemnt import get_singleimport pandas as pd# 获取字典类型的数据data=get_single.get_single()# 用pandas的DataFrame类型存储数据df=pd.DataFrame(data)df.to_csv("./books.csv",encoding="utf-8")print("ending of data")

该项目完成!!!

标签: