首页 代码 正文

Python爬取豆瓣读书TOP250

2023.8.3 代码 196
import requests
from bs4 import BeautifulSoup
import json
import os

url = "https://book.douban.com/top250"
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"}

def getHTML(num):
    r = requests.get(url, headers=header, params={"start": num})
    return r.text

## 定义方法存储一个网页页面数据
def getListData(html):
    booklist = []
    soup = BeautifulSoup(html, "lxml")
    books = soup.select("tr")
    for book in books:
        bookdic = {}
        tds = book.select("td")
        bookdic["书名"] = tds[1].div.a.text.strip().split("n")[0]
        bookdic["书籍详情"] = tds[0].a.get("href")
        bookdic["封面"] = tds[0].img.get("src")
        bookdic["出版信息"] = tds[1].p.text
        spans = tds[1].select("span[class]")
        bookdic["评分"] = spans[1].text
        bookdic["评论人数"] = spans[2].text.replace("(", "").replace(")", "").strip()
        if len(spans) == 4:
            bookdic["备注"] = spans[3].text
        booklist.append(bookdic)
    return booklist

## 存储所有网页页面数据
allbooks = []
for i in range(10):
    html = getHTML(i * 25)
    page = getListData(html)
    allbooks.extend(page)

## 定义方法将数据保存为json文件
def saveJson(dic, path, filename):
    jData = json.dumps(dic, indent=2, ensure_ascii=False)
    if not os.path.exists(path):
        os.makedirs(path)
    with open(path + filename, "w", encoding="utf-8") as f:
        f.write(jData)

## 调用方法将数据保存在mdata目录下douban250.json文件中
saveJson(allbooks, "mdata/", "douban250.json")
  1. 转载请保留原文链接:Python爬取豆瓣读书TOP250 https://aboss.top/post/164/
  2. 本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
  3. 本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
  4. 本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
  5. 联系方式(#替换成@):mail#aboss.top

评论

热门搜索