课程:《python程序设计》
班级:2123
姓名:徐开帅
学号:20212315
实验教师:王志强
实验日期:2022年5月31日
必修/选修:公选课

1 实验内容
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。

2 实验目的
爬取豆瓣网站电影top250

3 实验过程
源代码:

import re # 正则表达式,进行文字匹配`
import urllib.error # 制定URL,获取网页数据
import urllib.request

import xlwt
from bs4 import BeautifulSoup # 网页解析,获取数据

findLink = re.compile(r'')
findImage=re.compile(r'<img.src="(.?)"',re.S)
findTitle = re.compile(r'(.)')
findPoint = re.compile(r'(.
)')
findJudge = re.compile(r'(\d)人评价')
findIng = re.compile(r'(.
?)')
findbd = re.compile(r'

(.*?)

',re.S)

def main():
baseurl = "
https://movie.douban.com/top250?start=" # 1.爬取网页
datalist = getData(baseurl)
savepath = "豆瓣电影Top250.xls"
saveData(datalist, savepath)

def getData(baseurl):
datalist = []
for i in range(0, 10):
url = baseurl + str(i * 25)
html = askURL(url)
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all('div', class_="item"):
data = []
item = str(item)
titles = re.findall(findTitle, item)
if (len(titles) == 2):
ctitle = titles[0]
data.append(ctitle)
otitle = titles[1].replace("/", "")
data.append(otitle)
else:
data.append(titles[0])
data.append(' ')
Image =re.findall(findImage,item)
if(len(Image) == 1):
data.append(Image[0])
datalist.append(data)
print(datalist)
return datalist

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"
}
request = urllib.request.Request(url, headers=head)
html = ""
try:
response = urllib.request.urlopen(request)
html = response.read().decode("utf-8")
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e, "reason"):
print(e.reason)
return html

def saveData(datalist,savepath):
print("save.......")
book = xlwt.Workbook(encoding="utf-8",style_compression=0)
sheet = book.add_sheet('豆瓣电影Top250', cell_overwrite_ok=True)
sheet.write(0,0,"影片中文名")
sheet.write(0,1,"影片英文名")
sheet.write(0,2,"影片链接")
for i in range(0,250):
data = datalist[i]
for j in range(0,3):
sheet.write(i+1,j,data[j])
book.save(savepath)

if name == "main": # 当程序执行时
# 调用函数
main()
print("爬取完毕!")

4 实验结果

其他(感悟、思考等)
1.经过一个学期的学习,我发现编程并不像我原本想象的那样,像动画影视作品一样具象的有趣,它所呈现给我们的,更多是冷冰冰的代码及逻辑,但真正热爱编程的人却能从中找到字里行间的趣味性,并利用这些冷冰冰的代码,去实现各种缤纷绚丽的实际功能。
2.在学习python的过程中,在王老师的指导下,经过一学期的学习,我感触颇深,也学到了很多的python相关知识。从数据类型、操作符,到分支循环结构、列表元组、字符串、函数,再到类和对象、爬虫,我们一步步深入python的学习,也让我们培养了对编程浓厚的兴趣。在往后的学习中,我们也不会放弃python的学习。