首页 > 解决方案 > 两个相同的链接在从中解析用户名时表现不同

问题描述

我在 python 中创建了一个脚本来从网页中获取用户名。我使用了两个相同的链接来查看脚本的行为方式。该脚本可以解析第一个链接的用户名,但在转到第二个链接时失败,因此它会抛出AttributeError.

我试过:

import requests
from bs4 import BeautifulSoup

links = (
    "https://twitter.com/fabogeek",
    "https://twitter.com/radio702"
)

for link in links:
    res = requests.get(link,headers={"User-Agent":"Mozilla/5.0"})
    soup = BeautifulSoup(res.text,"lxml")
    username = soup.select_one("div[dir='ltr']:contains('@') > span").text
    print(username)

电流输出:

@Jeezy
AttributeError

预期输出:

@Jeezy
@Radio702

如何使用请求从第二个链接获取用户名?

标签: pythonpython-3.xweb-scrapingpython-requests

解决方案


修复。你select_one()没有得到第二个链接,所以它正在返回None

import requests
from bs4 import BeautifulSoup

links = (
    "https://twitter.com/fabogeek",
    "https://twitter.com/radio702"
)

for link in links:
    res = requests.get(link,headers={"User-Agent":"Mozilla/5.0"})
    soup = BeautifulSoup(res.text,"lxml")
    username = soup.find("b", {'class':'u-linkComplex-target'}).text
    print(username)

出[1]:
FaboGeek
Radio702


推荐阅读