属性错误:';答复';对象没有属性';txt';-Python网页抓取

属性错误:';答复';对象没有属性';txt';-Python网页抓取,python,web-scraping,beautifulsoup,python-requests,Python,Web Scraping,Beautifulsoup,Python Requests,我正在开发一个新的项目,以摆脱我能做的最基本的事情,我决定研究网页抓取。 我的想法是用来检查Steam的当前状态,并让我的脚本打印出来。对于第一个,我使用了蒸汽商店的状态,并编写了以下代码: import requests import bs4 res = requests.get('https://www.steamstatus.io/') res.raise_for_status SteamStatus = bs4.BeautifulSoup(res.txt, 'html.parser'

我正在开发一个新的项目,以摆脱我能做的最基本的事情,我决定研究网页抓取。 我的想法是用来检查Steam的当前状态,并让我的脚本打印出来。对于第一个,我使用了蒸汽商店的状态,并编写了以下代码:

import requests
import bs4

res = requests.get('https://www.steamstatus.io/')
res.raise_for_status

SteamStatus = bs4.BeautifulSoup(res.txt, 'html.parser')
type(SteamStatus)

storeStatus = SteamStatus.select('#statustables > div.statustable.left > div > div:nth-child(1) > div.statusrow_status.store-status')
print(str(storeStatus))
这样,我得到了以下错误:

Traceback (most recent call last):
  File "C:/Users/a864/PycharmProjects/automation/steam status/webpage.py", line 8, in <module>
    SteamStatus = bs4.BeautifulSoup(res.txt, 'html.parser')
AttributeError: 'Response' object has no attribute 'txt'
回溯(最近一次呼叫最后一次):
文件“C:/Users/a864/PycharmProjects/automation/steam status/webpage.py”,第8行,在
streamstatus=bs4.BeautifulSoup(res.txt,'html.parser')
AttributeError:“Response”对象没有属性“txt”

从我搜索和发现的情况来看,这可能是requests模块的过时版本的问题,但我已经确定我拥有最新版本(2.24.0)

,因为异常情况告诉您,您正在尝试引用一个不存在的属性。
响应
公开了一个
.text
属性,而不是
.txt
属性。

异常告诉您,您试图引用一个不存在的属性。
响应
公开了一个
.text
属性,而不是
.txt
属性。

欢迎使用SO

如前面的回答中所述,错误与使用错误的属性
.txt
-有关,尽管
.text
正确

最后要注意的是,您试图抓取的页面加载了javascript,因此
请求
不是您要查找的包。有关使用
selenium
webdriver的大致解决方案,请参见下文

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Firefox() # initialize the driver

driver.get('https://www.steamstatus.io/') # go to the page

source = driver.page_source # extract the source

SteamPage = BeautifulSoup(source, 'html.parser')

SteamStatus = SteamPage.findAll('div', {'class' : 'statusrow'})
for s in SteamStatus:
    print(s.findNext('div', {'class' : 'statusrow_name'}).text) # print the row name
    print(s.findNext('div', {'class' : 'statusrow_status'}).text) # and the uploaded value
欢迎来到SO

如前面的回答中所述,错误与使用错误的属性
.txt
-有关,尽管
.text
正确

最后要注意的是,您试图抓取的页面加载了javascript,因此
请求
不是您要查找的包。有关使用
selenium
webdriver的大致解决方案,请参见下文

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Firefox() # initialize the driver

driver.get('https://www.steamstatus.io/') # go to the page

source = driver.page_source # extract the source

SteamPage = BeautifulSoup(source, 'html.parser')

SteamStatus = SteamPage.findAll('div', {'class' : 'statusrow'})
for s in SteamStatus:
    print(s.findNext('div', {'class' : 'statusrow_name'}).text) # print the row name
    print(s.findNext('div', {'class' : 'statusrow_status'}).text) # and the uploaded value

不,那是因为它应该是
.text
,而不是
.txt
…不,那是因为它应该是
。text
,而不是
。txt
…最后找到了答案,谢谢<代码>[加载]现在我的问题是这是我得到的输出。“加载”实际上应该是“正常”、“延迟”等,我知道当站点加载时,“加载”会出现,我有没有办法让它在完全加载后才刮掉?我已经尝试了
时间。sleep
已经持续了20秒(比我加载所需的时间要长),但它仍然显示“加载”@Meirewes如果你有一个单独的问题,请提出一个单独的问题。。。你可能想考虑这个状态是否是由JavaScript生成的……最后,想出了一个,谢谢。代码>[加载]现在我的问题是这是我得到的输出。“加载”实际上应该是“正常”、“延迟”等,我知道当站点加载时,“加载”会出现,我有没有办法让它在完全加载后才刮掉?我已经尝试了
时间。sleep
已经持续了20秒(比我加载所需的时间要长),但它仍然显示“加载”@Meirewes如果你有一个单独的问题,请提出一个单独的问题。。。你可能想考虑这个状态是否是由JavaScript生成的…