【问题标题】:AttributeError: 'NoneType' object has no attribute 'getText'AttributeError:“NoneType”对象没有属性“getText”
【发布时间】:2022-01-07 00:41:38
【问题描述】:

我参加了一个 udemy 课程,讲师教授如何获取用户推文。

当我运行代码时它给了我

AttributeError: 'NoneType' 对象没有属性 'getText'

在 udemy 上没有得到很好的支持,所以如何使这段代码工作。

from bs4 import BeautifulSoup as soupy

import urllib.request
import re

html = urllib.request.urlopen('https://twitter.com/samad_bloch0x1').read()

soup = soupy(html, features="html.parser",)

x = soup.find('p', {'class':'js-tweet-text'}).getText()

filter = re.findall(r'"(.*)"', x)ut
tweet = filter[0]  

print(tweet)

这是我的全部代码

【问题讨论】:

    标签: python web web-scraping twitter typeerror


    【解决方案1】:

    会发生什么?

    首先,仔细看看你的汤 - 这是事实。

    None 被返回,导致 beautifulsoup 找不到您尝试选择的元素 - 那么您确定源中存在此类 js-tweet-text 的元素吗?汤?

    关注也可能是一个原因:

    JavaScript 不可用。

    我们检测到 此浏览器中禁用了 JavaScript。请启用 JavaScript 或 切换到支持的浏览器以继续使用 twitter.com。你可以 在我们的帮助中心查看支持的浏览器列表。

    你能做什么?

    • 使用官方api

    • 使用代理

    • 尝试使用硒

    硒 4 示例

    from bs4 import BeautifulSoup
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service as ChromeService
    options = webdriver.ChromeOptions()
    service = ChromeService(executable_path='YOUR PATH TO CHROMEDRIVER')
    driver = webdriver.Chrome(service=service, options=options)
    driver.get('https://twitter.com/samad_bloch0x1')
    
    # if selenium is to slow you may have to wait -> https://www.selenium.dev/documentation/webdriver/waits/
    soup = BeautifulSoup(driver.page_source,'html.parser')
    
    print(soup.select('[data-testid="tweet"]'))
    
    driver.close()
    

    【讨论】:

    • 我在推文源中没有看到 js-tweet,我在编码中是菜鸟,您能否尝试代码并修复它以从提供的 url 获取推文?
    • 这正是您收到错误消息的原因以及为什么我问您是否真的确定 js-tweet-text 类存在于您的 soup 或源中 - 不要浪费您的时间并开始互动机智的官方twitter api 如果您不喜欢从头开始,请查看tweepy 快乐编码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2021-03-24
    • 2013-04-08
    • 2019-01-01
    • 2021-12-26
    • 2019-07-23
    • 2018-05-13
    相关资源
    最近更新 更多