7.获取豆瓣读书top250

"""
获取豆瓣读书top250
1.发送请求,获取html页码数据
2.解析数据,把html转化为解析对象
3.定位数据,根据html页面标签提取数据
4.保存数据
"""
import requests
import csv
import parsel

# 创建文件对象
f = open("豆瓣读书top250.csv",mode="a",encoding="utf‑8‑sig",newline="")
csv_writer = csv.DictWriter(f,[
    "书名",
    "作者",
    "出版社",
    "出版年份",
    "价格",
    "评分",
    "简介",
    "详情页"
])
csv_writer.writeheader()  # 写入表头

# 翻页获取1-10页数据
for page in range(10):
    print(f"正在爬取第{page+1}页的数据.......")
    start_num = page * 25
    url = f'https://book.douban.com/top250?start={start_num}'
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36"
    }
    # url = "https://book.douban.com/top250"
    response = requests.get(url=url,headers=headers,verify=False)
    response.encoding = response.apparent_encoding
    # print(response.text)
    # html页面转化成可解析对象
    selector = parsel.Selector(response.text)
    # 获取所有书籍数据标签
    tables = selector.css(".indent table")
    for table in tables:
        title = table.css(".pl2 a::text").get().strip() # 书名
        href = table.css(".pl2 a::attr(href)").get() # 书名
        book_info = table.css(".pl::text").get().split("/")  # 书具体信息数据
        author = book_info[0]  # 作者
        press = book_info[2] if len(book_info) > 4 else book_info[1] # 出版社
        year = book_info[3] if len(book_info) > 4 else book_info[2]  # 出版年份
        price = book_info[-1] if len(book_info) > 3 else "" # 价格
        score = table.css(".rating_nums::text").get()  # 评分
        intro = table.css(".quote span::text").get()   # 简介
        # print(title,author,press,year,price,score,intro)
        dict_data = {
            "书名": title,
            "作者": author,
            "出版社": press,
            "出版年份": year,
            "价格": price,
            "评分": score,
            "简介": intro,
            "详情页": href
        }
        print(dict_data)
        csv_writer.writerow(dict_data)
f.close()
"""
https://book.douban.com/top250?start=0   第1页
https://book.douban.com/top250?start=25  第2页
https://book.douban.com/top250?start=50  第3页
(清)曹雪芹 / 人民文学出版社 / 1982-3 / 59.70元
[英] J·K·罗琳 / 苏农 / 人民文学出版社 / 2008-12 / 498.00元
[英] 阿·柯南道尔 / 丁钟华 等 / 群众出版社 / 1981-8 / 53.00元/68.00元
[日] 伊藤诗织 / 匡匡 / 雅众文化/中信出版集团 / 2019-4 / 48.00元
4 个元素:[作者,出版社,年份,价格]
5 个元素:[作者,译者,出版社,年份,价格]
"""

image
image

posted @ 2026-08-24 17:08  無心的Man  阅读(14)  评论(0)    收藏  举报