这是一道爬虫+数据处理的问题,不难,但是很细节,我肝了好久才做出了,主要是因为对模块操作不是很熟悉。
附件地址:http://72.itmc.org.cn/JS001/open/show/weixindata.html
# 1. 运行或提交代码不需要自己编写测试用例,后台自动进行测试检查。
# 2. 您编写代码的区域需要限制在Solution类或其他类和函数体内,保证输入与输出符合任务要求即可。
# 3. 点击“提交代码”按钮,系统将查看程序是否正确,并保存代码,记录任务数据。
# 4. 提交代码次数越多,任务得分越低。
# 5. 点击右上方“结束任务”按钮,系统将在后台计算任务得分,任务结束。
# -*- coding: utf-8 -*-
import re
import requests
import bs4
class Solution:
def weixinData(self, name: str) -> str:
url = 'http://72.itmc.org.cn/JS001/open/show/weixindata.html'
html_text = requests.get(url)
html_text.encoding = 'utf-8'
html_doc = bs4.BeautifulSoup(html_text.text, 'html.parser')
tr_list = html_doc.find("tbody").find_all('tr')
data = {}
t_name,td3,td4,td7 = None,None,None,None
for item in tr_list:
td_list = item.find_all('td')
cnt = 0
for td in td_list:
# 名称
if cnt == 1:
t_name = td.find(class_='js-rank-detail-btn').text
if cnt == 3:
td3 = str(td.text)
td3 = float(td3.replace('万',''))
# print(td3)
if cnt == 4:
td4 = str(td.text)
if td4.find('万') > -1:
td4 = float(td4.replace('万+','')) *10000
td4 = int(td4)
# print(td4)
if cnt == 7:
td7 = str(td.text)
if td7.find('万') > -1:
td7 = float(td7.replace('万+','')) *10000
td7 = int(td7)
# print(td7)
cnt += 1
# print(td, end='\n\n')
data.setdefault(t_name,{
'td3': td3,
'td4': td4,
'td7': td7
})
if data[name]['td3'] < 300 and data[name]['td4'] > 90000 and data[name]['td7'] > 80000:
return 'YES'
else:
return 'NO'