概述
初来乍到,请多多关照!如下代码如有异议请留言指出,感谢阅读!
通过python爬取豆瓣前250条电影信息
以下代码从IT私塾学习并精简
import requests
# 请求数据
from bs4 import BeautifulSoup
# 解析数据
import re
# 正则匹配
import sqlite3
# 数据库
def main():
baseurl = "https://movie.douban.com/top250?start="
datalist = getDate(baseurl)
saveDate(datalist)
findLink = re.compile(r'<a href="(.*?)">')
# 影片链接
findImg = re.compile(r'img.*src="(.*?)"')
# 图片链接
findName = re.compile(r'<img alt="(.*?)"')
# 影片名字
findScore = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
# 影片评分
findAbstract = re.compile(r'<span class="inq">(.*)</span>')
# 影片简介
# 1.爬取数据
def getDate(baseurl):
datalist = []
for i in range(0, 10):
# 调用获取页面信息的函数,10次
url = baseurl + str(i * 25)
html = askURL(url)
# 保存获取到的网页源码
# 2.逐一解析数据
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all('div', class_="item"):
# 查找符合要求的字符串,形成列表
# print(item)
#测试:查看电影item全部信息
data = []
# 保存一部电影的所有信息
item = str(item)
name = re.findall(findName, item)[0]
# re库用来通过正则表达式查找指定的字符串
data.append(name)
score = re.findall(findScore, item)[0]
data.append(score)
abstract = re.findall(findAbstract, item)
if len(abstract) != 0:
abstract = abstract[0].replace("。", "")
# 去除句号
data.append(abstract)
else:
data.append(" ")
# 留空
img = re.findall(findImg, item)[0]
data.append(img)
link = re.findall(findLink, item)[0]
data.append(link)
datalist.append(data)
# 注意将数据放入datalist
return datalist
# 得到指定一个URL的网页内容
def askURL(url):
head = {
# 模拟浏览器头部信息,向豆瓣服务器发送消息
"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"
}
# 用户代理,表示告诉豆瓣服务器,我们是什么类型的机器、浏览器(本质上是告诉浏览器,我们可以接收什么水平的文件内容)
html = ""
try:
html = requests.get(url, headers=head).text
except Ellipsis as e:
print(e)
return html
# 创建数据库
def createDB():
sql = '''
create table Top250(
id integer primary key autoincrement,
name varchar not null,
score float,
abstract text,
img text,
link text)
'''
conn = sqlite3.connect("doubanDB")
# 打开或创建数据库文件
c = conn.cursor()
# 获取游标
c.execute(sql)
# 执行sql语句
conn.commit()
# 提交数据库操作
conn.close()
# 关闭数据库连接
print("创建数据库成功")
# 3.保存数据
def saveDate(datalist):
createDB()
# 创建数据库
i = 1
conn = sqlite3.connect("doubanDB")
# 打开或创建数据库文件
c = conn.cursor()
# 获取游标
for data in datalist:
print(f"正在保存第{i}条数据")
i += 1
for index in range(len(data)):
data[index] = '"' + data[index] + '"'
#给添加数据库中的数据加 “ 号
sql = '''
insert into Top250(
name,score,abstract,img,link)
values(%s)'''%",".join(data)
# print(sql)
c.execute(sql)
conn.commit()
conn.close()
print("全部数据保存成功!!")
if __name__ == '__main__':
main()
感谢阅读!
最后
以上就是忧伤铃铛为你收集整理的通过python爬取豆瓣前250条电影信息的全部内容,希望文章能够帮你解决通过python爬取豆瓣前250条电影信息所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复