Reputation: 1411
I am using beautifulSoup to extract data from website. Text from that website changes everytime you reload your page so basically I wish to be able to set a focus on the class name as a Static variable since the text is Dynamic.
import requests
from bs4 import BeautifulSoup
url = 'xxxxxxxxxxx'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
class2 = soup.find_all(True, class_="template_title")
print (class2)
which prints out
<td align="left" class="template_title" height="50" valign="bottom" width="535"><div style="padding-bottom:9px;">4</div></td>
When the page reloads, I will still have the focus on the area but I do not know how to print only the text (which in this case is : 4)
Once this is figured out, I have another question: If the class contains multiple tags, is there a way to get more static data to be sure it only prints the text I was searching for and not more? ( I have class, but could I use height="50" valign="bottom" width="535" as well?)
Upvotes: 1
Views: 4220
Reputation: 378
i usually use .get_text()
yes,you can
there is a method : .find_all(name, attrs, recursive, string, limit, **kwargs)
**kwargs :recive anything like height ,valign ,width
or
attrs = {'height':'50','valign':'bottom'}
Upvotes: 0
Reputation: 369444
You can use text
or string
attribute of the element.
elems = soup.find_all(True, class_='template_title')
print([elem.string for elem in elems])
# prints `['4']` for the given html snippet
Specify more attributes as you want:
elems = soup.find_all(True, class_='template_title',
height='50', valign='bottom', width='535')
Upvotes: 1