#连接自己的数据库 电影基本数据库表已上传可以下载 或者自己根据上一条博客的代码爬取后存到自己的数据库
有整个项目的资源可以下载 已上传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()