python爬取豆瓣影评存数据库【新手必入】
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python爬取豆瓣影评存数据库【新手必入】,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3942字,纯文字阅读大概需要6分钟。
内容图文
![python爬取豆瓣影评存数据库【新手必入】](/upload/InfoBanner/zyjiaocheng/864/6b885ffd6257456ba330f215342001a2.jpg)
效果展示
需要用到的库
import requests
from time import sleep
from lxml import etree
import pymysql
首先看看我们要爬的页面链接
https://movie.douban.com/subject/30313969/comments?start=0&limit=20&status=P&sort=new_score
这个链接只是第一页,我们要爬取所有的数据,就必须翻页一页一页的爬
我们先看看第二页的网页链接
https://movie.douban.com/subject/30313969/comments?start=20&limit=20&status=P&sort=new_score
我们发现 ?start= 这个地方出现了变化,从0 变成了 20 其他都没变, start中文意思是开始,简单分析可得,一页有二十个评论,所以后面的按照 ?start=40,?start=60 依次递增
可以写个for循环实现,也不爬取太多,前200个评论即可
for i in range(0,220,20):
#转为字符串类型
i = str(i)
#将i代入
url = 'https://movie.douban.com/subject/30313969/comments?start='+i+'&limit=20&status=P&sort=new_score'
添加UA伪装请求头
# UA伪装请求头
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chromeh/81.0.4044.138 Safari/537.36'
}
按F12查看网页源代码,并分析数据
使用xpath进行数据爬取
for i in range(0,220,20):
#转为字符串类型
i = str(i)
#将i代入
url = 'https://movie.douban.com/subject/30313969/comments?start='+i+'&limit=20&status=P&sort=new_score'
response = requests.get(url=url,headers=header).text
tree = etree.HTML(response)
ul = tree.xpath('//div[@class="comment"]')
#遍历二十个存储评论信息的div
for li in ul:
#网名
name = li.xpath('.//span[@class="comment-info"]/a/text()')[0]
#评价
rating = li.xpath('.//span[@class="comment-info"]/span[2]/@title')[0]
# 评论时间 # 评论时间 这里会有换行和许多空格
timed = li.xpath('.//span[@class="comment-info"]/span[3]/text()')[0]
#去掉空格
times = timed.replace(" ",'')
#去掉换行
time = times.replace("\n", "")
#评论
comment = li.xpath('.//span[@class="short"]/text()')[0]
print('网名:',name,' 评价:',rating,' 时间:',time,' 评论:',comment)
接下来开始存入数据库
在数据库里创建一个叫douban的库,再创建一个叫data的表用于存放数据
存入数据库
#连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='数据库用户名', passwd='数据库密码', database='douban',charset='utf8')
# 生成游标对象
cur = conn.cursor()
#使用添加语句
sql1 = "INSERT INTO data VALUES (%s,%s,%s,%s)"
#这里写上sql1的四个%s对应的值
da = [name,rating,time,comment] #[网名,评价,时间,评论]
try:
cur.execute(sql1, da) # 执行插入的sql语句
conn.commit() # 提交到数据库执行
except Exception:
# 发生错误时回滚
conn.rollback()
print("出现错误/可能与重复的值有关")
conn.close() # 关闭数据库连接
完整代码
import requests
from time import sleep
from lxml import etree
import pymysql
# UA伪装请求头
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chromeh/81.0.4044.138 Safari/537.36'
}
for i in range(0,200,20):
#转为字符串类型
i = str(i)
#将i代入
url = 'https://movie.douban.com/subject/30313969/comments?start='+i+'&limit=20&status=P&sort=new_score'
response = requests.get(url=url,headers=header).text
tree = etree.HTML(response)
ul = tree.xpath('//div[@class="comment"]')
#遍历二十个存储评论信息的div
for li in ul:
#网名
name = li.xpath('.//span[@class="comment-info"]/a/text()')[0]
#评价
rating = li.xpath('.//span[@class="comment-info"]/span[2]/@title')[0]
# 评论时间 # 评论时间 这里会有换行和许多空格
timed = li.xpath('.//span[@class="comment-info"]/span[3]/text()')[0]
#去掉空格
times = timed.replace(" ",'')
#去掉换行
time = times.replace("\n", "")
#评论
comment = li.xpath('.//span[@class="short"]/text()')[0]
#连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='数据库用户名', passwd='数据库密码', database='douban',charset='utf8')
# 生成游标对象
cur = conn.cursor()
#使用添加语句
sql1 = "INSERT INTO data VALUES (%s,%s,%s,%s)"
#这里写上sql1的四个%s对应的值
da = [name,rating,time,comment] #[网名,评价,时间,评论]
try:
cur.execute(sql1, da) # 执行插入的sql语句
conn.commit() # 提交到数据库执行
except Exception:
# 发生错误时回滚
conn.rollback()
print("出现错误/可能与重复的值有关")
conn.close() # 关闭数据库连接
#做一个进度条显示进度
i = int(i)
print("已将%s条评论存入数据库中"%i)
内容总结
以上是互联网集市为您收集整理的python爬取豆瓣影评存数据库【新手必入】全部内容,希望文章能够帮你解决python爬取豆瓣影评存数据库【新手必入】所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。