放爱自由 发表于 2023-6-13 20:41:11

爬取豆瓣Top250图书数据

爬取豆瓣Top250图书数据

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

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


import requests
from 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 soup3.提取网页中的关键信息
获取传出的解析后的数据,获取对应的图片,书名,作者,价格,评价,简介
from geturlcocument.get_document import get_page
import re
# 初始数据
pictures=[]
names=[]
authors=[]
prices=[]
scores=[]
sums=[]
def get_single():
    # 网址地址
    urls =
    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('/')
            # 价格
            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_single
import 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')该项目完成!!!

来源:https://www.cnblogs.com/prettyspider/p/17478232.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 爬取豆瓣Top250图书数据