为什么我的用python提取豆瓣网页信息时会有 width="100"/>\n\n\n<div class="info']这段信息去不掉!
图片说明
代码如下:
findlink = re.compile(r'<a href="(.*?)">') # 创建正则表达式对象,表示规则(字符串模式)
# 获取到影片图片链接的规则
findImgsrc = re.compile(r'<img.*src="(.*?)">', re.S) # re.S让换行符包含字符中
# 获取到影片片名链接的规则
findTitle = re.compile(r'<span class="title">(.*)</span>')
# 获取到影片评分链接的规则
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
# 评价人数
findNum = re.compile(r'<span>(\d*)人评价</span>')
# 概况
findContent = re.compile(r'<span class="inq">(.*)</span>')
# 找到的相关内容
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)
# 清洗网页
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"): # 查找符合要求的字符串,形成列表
# print(item) #测试;查看电影item全部信息
data = [] # 保存一部电影的全部信息
item = str(item)
link = re.findall(findlink, item)[0] # re库通过正则表达式查找指定字符串
data.append(link) # 添加影片链接
img = re.findall(findImgsrc, item)
data.append(img) # 添加影片图片
title = re.findall(findTitle, item)
if len(title) == 2:
data.append(title[0]) # 添加影片中文名
otitle = title[1].replace("\xa0/\xa0", "") # 去掉外文电影名中的\符号
data.append(otitle) # 添加影片外文名
else:
data.append(title)
data.append(" ")
rating = re.findall(findRating, item)[0]
data.append(rating) # 添加影片评分
num = re.findall(findNum, item)[0]
# print(type(num))
data.append(num) # 添加影片评分人数
content = re.findall(findContent, item)
if len(content) != 0:
content = content[0].replace("。", "")
data.append(content) # 添加影片概述
else:
data.append(" ")
bd = re.findall(findBd, item)[0]
bd = re.sub("<br(\s+)?/>(\s+)?", " ", bd) # 去掉</br>
bd = re.sub("/", " ", bd)
data.append(bd.strip()) # 添加影片详情
datalist.append(data)
print(datalist)
return datalist
求大佬解答