python 爬取名字分数

python 爬取名字分数

python 代码展示:

print 打印的方式:

打印变量的两种方法
一种是变量连着打印,用 %s, 一种是直接打印:

打印方法i
结果输出:
result

下面是给 名字批量打分数的例子,主要用到 bs4, requests 两个模块进行数据的访问和解析;
需要熟悉的内容有:

  1. requests get() 函数:
  2. beautifulsoup 函数解析: 其中包含 find_all 函数的使用;
  3. 文件的读取和写入,用 open 函数
  4. 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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值