Paython微博根據用戶名搜索爬取該用戶userId

根據微博用戶名搜索爬取該用戶userId並返回

 

import urllib.request
from urllib import parse

from bs4 import BeautifulSoup


# 微博根據用戶名查找userId


# userName 用戶名
# pageNum 查詢頁數,每頁20個數據。 默認爲第一頁值爲1,第二頁值爲2,以此類推。
def getUserId(userName, pageNum):
    # 用戶名需要URL編碼後
    html_doc = "https://s.weibo.com/user/&nickname=" + parse.quote(userName) + "&page=" + pageNum
    req = urllib.request.Request(html_doc)
    webpage = urllib.request.urlopen(req)
    html = webpage.read()
    soup = BeautifulSoup(html, 'html.parser')  # 文檔對象
    if soup:
        print("找到html")
    # 第一步:抓取a標籤
    # <a class="name" href="//weibo.com/u/5288987897" suda-data="key=tblog_search_weibo&amp;value=seqid:157406704247901067764|type:3|t:0|pos:1-0|q:|ext:mpos:1,click:user_name" target="_blank">暴烈甜心<em class="s-color-red">小</em><em class="s-color-red">鱷魚</em>毛毛</a>
    for a in soup.find_all('a', class_='name'):
        if a:
            # 第二步:抓取a標籤中用戶名
            rpuserName = a.get_text()
            print("搜到用戶名=" + rpuserName)
            # 第三步: 判斷是否有該用戶,如果有,獲取該用戶userId
            if a.get_text(strip=True) == userName:
                print("匹配到該用戶")
                print("用戶個人主頁鏈接=" + a['href'])
                # 第四步:提取userId,然後返回
                userUrl = a['href'].split("/")
                print(userUrl)
                if userUrl and len(userUrl) > 0:
                    userId = userUrl[len(userUrl) - 1]
                    return "userId=" + userId
                else:
                    return "userID抓取失敗"
                break
        else:
            return "沒有查找到a標籤"
    else:
        return "沒有找到數據"


if __name__ == "__main__":
    userName = "用戶名"
    print(getUserId(userName, "1"))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章