专栏首页有趣的django4.python读写csv文件

4.python读写csv文件

import requests
import json
import csv
from bs4 import BeautifulSoup

books = []

def book_name(url):
    res = requests.get(url)
    html = res.text
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find(class_="grid-16-8 clearfix").find(class_="indent").find_all('table')

    for i in items:
        book = []
        title = i.find(class_="pl2").find('a')
        book.append('《' + title.text.replace(' ', '').replace('\n', '') + '》')

        star = i.find(class_="star clearfix").find(class_="rating_nums")
        book.append(star.text + '分')

        try:
            brief = i.find(class_="quote").find(class_="inq")
        except AttributeError:
            book.append('”暂无简介“')
        else:
            book.append(brief.text)

        link = i.find(class_="pl2").find('a')['href']
        book.append(link)

        global books
        books.append(book)

        print(book)

    try:
        next = soup.find(class_="paginator").find(class_="next").find('a')['href']
    # 翻到最后一页
    except TypeError:
        return 0
    else:
        return next


next = 'https://book.douban.com/top250?start=0&filter='
count = 0

while next != 0:
    count += 1
    next = book_name(next)
    print('-----------以上是第' + str(count) + '页的内容-----------')

csv_file = open('D:/top250_books.csv', 'w', newline='', encoding='utf-8')
w = csv.writer(csv_file)
w.writerow(['书名', '评分', '简介', '链接'])
for b in books:
    w.writerow(b)

结果

2.

'''
1.爬取豆瓣评分排行前250本书,保存为top250.csv
2.读取top250.csv文件,把评分为9.0以上的书籍保存到另外一个csv文件中
'''

import csv

#打开的时候必须用encoding='utf-8',否则报错
with open('top250.csv', encoding='utf-8') as rf:
    reader = csv.reader(rf)
    #读取头部
    headers = next(reader)
    with open('books_out.csv', 'w', encoding='utf-8') as wf:
        writer = csv.writer(wf)
        #把头部信息写进去
        writer.writerow(headers)

        for book in reader:
            #获取评分
            score = book[1]
            #把评分大于9.0的过滤出来
            if score and float(score) >= 9.0:
                writer.writerow(book)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 9.python3实用编程技巧进阶(四)

    zhang_derek
  • python爬虫入门(五)Selenium模拟用户操作

    爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider) 之间恢宏壮阔的斗争... 小莫想要某站上所有的电影,写了...

    zhang_derek
  • 10.Flask上下文

     应用上下文和请求上下文都是存放在一个‘LocalStack’的栈中,和应用app相关的操作就必须要用到应用上下文,比如通过current_app获取当前的这个...

    zhang_derek
  • 网页应该如何录屏呢?

    html2canvas 是通过分析页面中已加载好的 DOM 元素,然后 canvas 将生成的 DOM 节点绘制在画布上,最后转换为图片。它不是真正的截屏,只是...

    Fundebug
  • ASP.NET Core 如何在运行Docker容器时指定容器外部端口

    晓晨
  • 3389 Windows 远程端口修改工具

    https://pan.baidu.com/s/1Rt3ZFXY0sOD5okeb9VI3_A

    我爱你的一诺
  • 08DOM相关概念叙述

    DOM是个缩写,全称是 Document Object Model,被译为文档对象模型。

    Dreamy.TZK
  • 445端口如何正确的修改和关闭

    我们都知道,有些专业的黑客可以通过开放端口对windows系统进行攻击,但是很多状况下我们忘了把用不到的端口关闭,特别是一些程序调用了该端口过后没有及时关闭。下...

    it妹
  • MVC设计模式

    写了几天代码,然后对之前学到的知识,进行反思,写出来放在QQ空间上和博客上,目的是互相学习,然后希望可以得到编程高手的补充!这是我转载加修改的博客。 这是我...

    用户1208223
  • python对象和类

    py3study

扫码关注云+社区

领取腾讯云代金券