这个是运行后:
这个是项目要求:
以下是代码:
# -*- codeing = utf-8 -*-
# @Time : 2022/2/14 2:16
# @Author : 马辰宇
# @File : test.py
from bs4 import BeautifulSoup #网页解析,获取数据
import re #正则表达式,进行文字匹配
import urllib.request,urllib.error #制定URL,获取网页数据
import xlwt #进行Excel操作
def main():
baseurl = "https://tousu.sina.com.cn"
datalist = getData(baseurl) #爬取网页
savepath = "智芝全量化分析师笔试题 2。xls"
saveDate(savepath) #保存数据
#askURL("https://tousu.sina.com.cn")
findcontent = re.compile(r'<p>"(.*?)"</p>',re.S) #创建正则表达式对象,表示规则 #投诉内容
findobject = re.compile(r'<ul class="list">(.*)</ul>',re.S) #投诉对象和投诉要求
findtime = re.compile(r'<span class="time">(.*)</span>',re.S) #投诉时间
def getData(baseurl): #爬取网页
datalist = []
for i in range(0,1): #调用获取页面信息的函数,1次
url = baseurl + str(i*1)
html = askURL(url) #保持获取到的网页源码
soup = BeautifulSoup(html,"html.parser") #解析数据
for item in soup.find_all('a',class_="box select"): #查找符合要求的字符串,形成列表
#print(item) #测试查看item全部信息
data = [] #保持信息
item = str("box select")
content = re.findall(findcontent,item)[0] #re库用来通过正则表达式查找指定的字符串
data.append(content) #添加内容
object = re.findall(findobject,item)[0]
data.append(object) #添加对象
time = re.findall(findtime,item)[0]
data.append(time) #添加时间
datalist.append(data) #将处理好的信息放入datalist
return datalist
def askURL(url): #得到指定一个URL的网页内容
head = { #模拟浏览器头部信息,向服务器发送信息
"user-agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 90.0.4430.212Safari / 537.36Edg / 90.0.818.66"
} #用户代理,表示告诉服务器,我们是什么类型的机器、浏览器
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 saveDate(datalist,savepath): #保存数据
print("save....")
book = xlwt.Workbook(encoding="utf-8")
sheet = book.add_sheet('笔试')
col = ("投诉内容","投诉对象和投诉要求","投诉时间")
for i in range(0,3):
sheet.write(0,i,col[i])
for i in range(0,1):
print("最新投诉")
data = datalist[i]
for j in range(0,3):
sheet.write(i+1,j,data[j])
book.save('savepath')
if __name__ == "__main__": #当程序执行时,调用函数
main()