Python Forum
Error object has no attribute text - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Web Scraping & Web Development (https://python-forum.io/forum-13.html)
+--- Thread: Error object has no attribute text (/thread-12181.html)



Error object has no attribute text - hcyeap - Aug-13-2018

Hi all,

i am new to Python and am following examples found here
https://medium.freecodecamp.org/how-to-scrape-websites-with-python-and-beautifulsoup-5946935d93fe
to try to scrap text and prices from certain website.

It returned error although i followed the steps. Not sure what happened.

My code as per below:

# import libraries
import requests
import urllib
from bs4 import BeautifulSoup

# specify the url
quote_page='http://www.bloomberg.com/quote/SPX:IND'

# query the website and return the html to the variable ‘page’
page = urllib.request.urlopen(quote_page)

# parse the html using beautiful soup and store in variable `soup`
soup = BeautifulSoup(page,'html.parser')

# Take out the <div> of name and get its value
name_box = soup.find('h1', attrs={'class':'companyName__99a4824b'})

name = name_box.text.strip # strip() is used to remove starting and trailing
print (name)
this the text to be scrapped
<h1 class="companyName__99a4824b">S&P 500 Index</h1>

traceback:
name = name_box.text.strip # strip() is used to remove starting and trailing
AttributeError: 'NoneType' object has no attribute 'text'

Appreciate your guidance.

Thank you.

HC


RE: Error object has no attribute text - snippsat - Aug-13-2018

look at what soup give you back,so no info about stock is given that's why you get NoneType error.
One of the lines:
<p>Your usage has been flagged as a violation of our <a href="http://www.bloomberg.com/tos" rel="noopener noreferrer" target="_blank">terms of service</a>
tos(Terms Of Service)
Quote:You shall not use or attempt to use any “scraper,” “robot,” “bot,” “spider,” “data mining,” “computer code,”
or any other automate device, program, tool, algorithm, process or methodology to access, acquire, copy, or monitor any portion of the Service
So maybe find site a that more friendly that this,there may be a way be around,but not worth the effort.
It's just stock info a lot of sites has this for free with API and JSON output.
ALPHA VANTAGE | List of sites.


RE: Error object has no attribute text - heiner55 - May-21-2019

If you need quotes, you can use iex:

#!/usr/bin/python3
import requests, json

url = "https://api.iextrading.com/1.0/stock/ibm/quote"
rsp = requests.get(url)
if rsp.status_code in (200,):
    str = rsp.text.strip() # json
    print(str)
    print()
else:
    print("ERROR:", rsp.status_code)
    print(rsp.text + "\n\n")



RE: Error object has no attribute text - buran - May-21-2019

@heiner55:
  • Don't use str as variable name. It's built-in function and you override it.
  • rsp.json() will give you parsed json response