# -*- coding=utf-8 -*-
from bs4 import BeautifulSoup # 网页解析,获取数据
import re
import urllib.request
import xlwt
import sqlite3
def main():
baseurl = "https://movie.douban.com/top250?start="
# 1.爬取网页
datalist = getData(baseurl)
savepath = ".\豆瓣电影top250.xls"
# 3.保存数据
# saveData(savepath)
askURL("https://movie.douban.com/top250?start=0")
findlink = re.compile(r'') # 创建正则表达式对象,表示规则(字符串的模式)
findImgSrc = re.compile(r', re.S) # 让换行符包含在字符中
findTitle = re.compile(r'(.*)')
findRating = re.compile(r'.*')
findJudge = re.compile(r'(d*人评价)')
findInq = re.compile(r'(.*)')
findBd = re.compile(r'(.*)
', re.S) #S就是忽略换行符
# 爬取网页
def getData(baseurl):
datalist = []
for i in range(0, 1): # 调用获取页面信息的函数
url = baseurl + str(i * 25) # 每页25个
html = askURL(url) # 保存获取到的网页源码
# 2.逐一解析数据 一个网页解析一次
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all('div', class_="item"):
# print(item)
data = [] # 保存一部电影的所有信息
item = str(item)
link = re.findall(findlink, item)[0]
print(link)
# 查找符合要求的字符串形成列表
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/93.0.4577.82 Safari/537.36 Edg/93.0.961.52"}
# 用户代理表示告诉豆瓣代理我们是什么类型的机器、浏览器,我们可以接受什么类型的内容
request = urllib.request.Request(url, headers=head)
html = ""
try:
response = urllib.request.urlopen(request)
html = response.read().decode("utf-8")
# print(html)
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e, "reason"):
print(e.reason)
return html
def saveData(dbpath):
print("Saved")
if __name__ == "__main__":
main()



