用爬虫在网上进行批量的名字打分
该网站是我们输入,然后返回结果,所以我们进行network来进行抓包处理,修改一些参数就可以批量处理
import requests
from bs4 import BeautifulSoup
def get_name_mark(xing,ming): #输入姓名与名
url='https://life.httpcn.com/xingming.asp'
data={
'isbz': 0,
'xing':xing.encode('gb2312'), #因为网站的编码是gb2312,所以中文我们需要编码成gb2312格式,再给网站进行传输
'ming':ming.encode('gb2312'),
'sex': 1,
'data_type': 0,
'year': 1980,
'month': 5,
'day': 26,
'hour': 12,
'minute': 10,
'pid':'',
'cid':'',
'wxxy': 0,
'xishen': '金'.encode('gb2312'),
'yongshen': '金'.encode('gb2312'),
'check_agree': 'agree',
'act': 'submit'
}
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0',
'Referer':'https://life.httpcn.com/xingming.asp',
'Content-Type':'application/x-www-form-urlencoded'
}
r=requests.post(url,data=data,headers=headers) #网站是post的方法
r.encoding='gb2312'
soup=BeautifulSoup(r.text,'html.parser')
divs=soup.find('div',class_='l_form_ok').find_all('div',class_='chaxun_b')
for div in divs:
if '姓名五格评分' not in div.get_text():
continue
fonts=div.find_all('font')
return xing+ming,fonts[0].get_text(),fonts[1].get_text()
# name.txt文件是批量的名字不包括姓,一行一个名字
with open('name.txt','r',encoding='utf-8') as f , open('name_mark.txt','w',encoding='utf-8') as file:
names=f.readlines()
i=0
for name in names:
name=name.strip() #去除姓名的俩边空格
try: #若方法出现解码等问题就跳过
n,mark,suggect=get_name_mark('谢',name)
except:
print('error')
continue
file.write(f'{n}\t{mark}\t{suggect}\n')
print(i)
i+=1