python 爬取名字分数
python 代码展示:
print 打印的方式:
打印变量的两种方法
一种是变量连着打印,用 %s, 一种是直接打印:
结果输出:
下面是给 名字批量打分数的例子,主要用到 bs4, requests 两个模块进行数据的访问和解析;
需要熟悉的内容有:
- requests get() 函数:
- beautifulsoup 函数解析: 其中包含 find_all 函数的使用;
- 文件的读取和写入,用 open 函数
- html 网页的查看方法
from urllib.parse import urlencode
import requests
from bs4 import BeautifulSoup
url = "https://life.httpcn.com/xingming.asp"
def get_score(xing, ming):
data = {
"isbz" : 1,
"xing" : xing.encode("gb2312"),
"ming": ming.encode("gb2312"),
"sex": 1,
"data_type": 0,
"year": 1980,
"month": 9,
"day": 16,
"hour": 15,
"minute": 10,
"pid": "湖北省".encode("gb2312"),
"cid": "武汉".encode("gb2312"),
"wxxy": 0,
"xishen": "木".encode("gb2312"),
"yongshen": "木".encode("gb2312"),
"check_agree": "agree",
"act": "submit"
}
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
r = requests.get(url, data=urlencode(data), headers=headers)
print(r.status_code)
r.encoding = "gb2312"
#print(r.text)
soup = BeautifulSoup(r.text, "html.parser")
divs = soup.find_all("div", class_="chaxun_b")
bazi, wuge = 0, 0
for div in divs:
if "姓名五格评分" not in div.get_text():
continue
#print(div)
fonts = div.find_all("font")
bazi = fonts[0].get_text().replace("分", "").strip()
wuge = fonts[1].get_text().replace("分", "").strip()
return "%s%s"%(xing, ming), bazi, wuge
with open("input.txt") as fin, open("output.txt", "w") as fout:
for line in fin:
line = line.strip()
xingming, bazi, wuge = get_score("吴", line)
fout.write("%s\t%s\t%s\n"%(xingming, bazi, wuge))