[python]爬取CSDN博主信息

页面分析

  1. 首先定位到个人信息那一块,在这里可以通过find(id)来定位到这一个标签
    在这里插入图片描述

  2. 往下查看,我们分别需要这两块信息,两个div标签,初步判断需要取到这两个标签
    在这里插入图片描述
    在这里插入图片描述

  3. 打开其中一块div标签我们发现,下面的dl标签中title对应数量,dt标签对应文字,其余dl标签同理。
    在这里插入图片描述

  4. 打开另一个div标签我们发现有如下结构
    在这里插入图片描述
    至此我们发现,定位到最外面那一个id=asideProfile的tag,然后find所有dl tag就行了,检查发现其余div tag没有dl tag,所以这个方法可行

代码

暂时写一个简单的代码吧

# -*- coding: utf-8 -*-
"""
Created on Sun Jul 21 22:23:19 2019

@author: hmy
"""

from urllib import request
import  requests
from lxml import etree
from bs4 import BeautifulSoup

#获得html
def getHTML(url):
    try:
        r = requests.get(url, timeout=10)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r
    except:
        return "异常"



def readText(html_doc):
    #解析一下
    soup = BeautifulSoup(html_doc, 'lxml')
    #找到信息框这个大标签,find返回第一个搜索到的tag
    msg = soup.find(id='asideProfile')
    # 找到所有名为dl的标签,find_all返回一个list,里面是tag
    msg_dl = msg.find_all(name='dl')
    # print(len(msg_dd))

    # 遍历dl标签,拿出里面的dt,dd,也就是我们要解析的内容
    for dl in msg_dl:
        dt = dl.find(name='dt')
        dd = dl.find(name='dd')
        # a标签
        a = dd.find(name='a')
        # 原创,粉丝,喜欢,评论
        print(dt.string)
        # 等级标签
        if (a):
            #判断一下是否为空,dict key不存在的话会报错
           if ('title' in a.attrs):
                print(a.attrs['title'][0:2])
        if ('title' in dl.attrs):
            #原创,粉丝,喜欢,评论对应的值
            print(dl.attrs['title'])
        # 访问量,积分的值
        if (dd.attrs):
            print(dd.attrs['title'])

if __name__=='__main__':
    url='https://blog.csdn.net/hhmy77'
    html_doc=getHTML(url).text
    print(type(getHTML(url)))
    readText(html_doc)


运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值