爬取豆瓣某本书的评论,并保存到mysql数据库

爬取豆瓣某本书的评论,并保存到数据库。可以结合前面发表的文章一起使用。组成某本书的详细信息。


from requests_html import HTMLSession
import re
import time
from bs4 import BeautifulSoup
import pymysql


def get_txt(num_ye, num_book):
    """
    爬取数据
    :param num_ye: 爬取多少页的评论
    :param num_book: 爬取书的编号
    :return: 
    """
    session = HTMLSession()
    headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36 OPR/66.0.3515.115'}
    for start in range(1, num_ye + 1):
        url = 'https://book.douban.com/subject/' + str(num_book) + '/reviews/?start=' + str(start * 10)
        r = session.get(url, headers=headers, verify=False)
        s = re.findall('https://book.douban.com/review/\\d+', r.text, flags=0)
        # 获取到的url地址去重
        s = set(s)
        for x in s:
            r_xiangqing = session.get(str(x), headers=headers, verify=False)
            html = r_xiangqing.text
            bs = BeautifulSoup(html)
            # 评论内容
            for tag in bs.find_all('div', class_='review-content clearfix'):
                insert_data(tag.get_text())
            time.sleep(1)
    # 关闭数据库连接
    close_mysql()

def connect_mysql():
    global conn
    # 打开数据库连接  IP   用户名   密码   库名
    conn = pymysql.connect('localhost', 'root', '123456', 'shuping')


def insert_data(data=''):
    # 使用cursor()方法创建一个游标对象
    cursor = conn.cursor()
    # SQL语句:向数据表中插入数据
    sql = """insert into doubanbook(comments) value(%s)"""
    # 异常处理
    try:
        # 执行SQL语句
        cursor.execute(sql, (data))
        # 提交事务到数据库执行
        conn.commit()  # 事务是访问和更新数据库的一个程序执行单元
    except:
        # 如果发生错误则执行回滚操作
        conn.rollback()

def close_mysql():
    # 关闭数据库连接
    conn.close()


if __name__ == '__main__':
    connect_mysql()
    # 每页数据共20条
    get_txt(10, 25862578)


结果:
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是Python爬取豆瓣Top250电影并保存MySQL数据库的代码: ``` import requests from bs4 import BeautifulSoup import pymysql # 连接MySQL数据库 db = pymysql.connect(host='localhost', port=3306, user='root', password='your_password', db='your_database') cursor = db.cursor() # 创建表格 cursor.execute('CREATE TABLE IF NOT EXISTS top250(' 'id INT PRIMARY KEY AUTO_INCREMENT,' 'title VARCHAR(255) NOT NULL,' 'score FLOAT(3,1) NOT NULL,' 'director VARCHAR(255) NOT NULL,' 'actor VARCHAR(255) NOT NULL,' 'year VARCHAR(4) NOT NULL)') # 爬取Top250电影 url = 'https://movie.douban.com/top250' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') for item in soup.find_all('div', class_='info'): # 解析出电影名、评分、导演、演员、年份信息 title = item.find('span', class_='title').string score = item.find('span', class_='rating_num').string director = item.find('p').text.split('\n')[1].strip().strip('导演: ') actor = item.find('p').text.split('\n')[2].strip().strip('主演: ') year = item.find('p',class_='').text.split('\n')[1].strip().split('/')[0] # 数据库写入 cursor.execute("INSERT INTO top250(title, score, director, actor, year) VALUES (%s, %s, %s, %s, %s)", (title, score, director, actor, year)) db.commit() # 关闭数据库连接 db.close() ``` 这段代码可以将豆瓣Top250电影的电影名、评分、导演、演员、年份信息爬取下来,并保存到本地的MySQL数据库中。同时,还包括了创建表格的操作,因此不需要手动在数据库中建立表格。注意替换代码中的“your_password”和“your_database”为你自己的密码和数据库名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python图像识别

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值