爬取豆瓣top250电影每条电影的前n页评论,需要上一条博客代码里爬取的基本信息

2 篇文章 0 订阅
2 篇文章 0 订阅

#连接自己的数据库 电影基本数据库表已上传可以下载 或者自己根据上一条博客的代码爬取后存到自己的数据库
有整个项目的资源可以下载 已上传flask+…

import pymysql
import sys
import requests
import bs4
import re
#连接 mysql,获取连接的对象 
con = pymysql.connect(host='localhost', user='name', password='123456', port=3306, db='student')
with con:
    cur = con.cursor()#仍然是,第一步要获取连接的 cursor 对象,用于执行查询
    cur.execute("SELECT movies_address FROM movies_info")#类似于其他语言的 query 函数,execute 是 python 中的执行查询函数
    rows = cur.fetchall()#使用 fetchall 函数,将结果集(多维元组)存入 rows 里面
    mov_address=[]
    for row in rows:       #依次遍历结果集,发现每个元素,就是表中的一条记录,用一个元组来显示
        mov_address.append(row)

def open_url(url):
    headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}
    res=requests.get(url,headers=headers)
    return res
def find_movies(res):
    soup=bs4.BeautifulSoup(res.text,'html.parser')
    #评论
    movies_comment=[]
    targets=soup.find_all("div",class_='comment-item')
    for each in targets:
        movies_comment.append(each.p.span.text)
    return movies_comment
#找出有多少页面
def main():
    for i in range(10):  #前十部
        host = mov_address[i][0] #print(mov_address[2][0])#[0][0]代表第一个元素 [1][0]代表第二个元素 https://movie.douban.com/subject/1292720/
        res = open_url(host)
        filename='E:\pythonimg\电影\\'+str(i)+'.txt'  #这里保存影评地址
        #print(mov_address[i][0])

        info = []
        for i in range(3):  # 爬取3页评论
            url = host + 'comments?start=' + str(20 * i) + '&limit=20&sort=new_score&status=P'
            res = open_url(url)
            info.extend(find_movies(res))

            with open(filename, 'w', encoding='utf-8') as f:
                for each in info:
                    f.write(each)
if __name__=="__main__":
    main()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值