开始使用urllib模块爬的豆瓣top250感觉太多了,跟着视频做还是由很多看不懂
后来在另外一个视频里找到了一样的项目但是使用requests模块做的感觉代码简单好多主要是返回的数据格式很好不用再取优化,省了很多功夫。
from bs4 import BeautifulSoup # 网页解析,获取数据
import re # 正则表达式,进行文字匹配
import urllib.request,urllib.error # 制定url,获取网页数据
import xlwt # 进行excel操作
def main():
baseurl = "https://movie.douban.com/top250?start=" # 每一个网页的url都是有规律的
# 1.爬取网页并逐个页面解析
datalist = getData(baseurl)
# 2.保存数据
sava_path = "豆瓣电影Top250.xls"
saveData(datalist, sava_path)
# 影片详情链接的抽象特征(正则匹配)
# .*:贪婪匹配(匹配所有字符) .*?:惰性匹配(匹配到了一个字符就不匹配了)
# 括号是匹配到一个后,把括号里面的东西拿出来
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)
# 爬取网页
def getData(baseurl):
datalist = []
for i in range(0, 10): # 左闭右开,拿到250条所有页面
url = baseurl + str(i*25)
html = askURL(url) # 保存获取到的网页
# 2.逐一解析数据
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all('div', class_="item"): # 查找符合要求的字符串形成列表,加个下划线表示属性
data = [] # 保存一部电影的所有信息
item = str(item