Why am I not getting the output nor an error in web scraping?
I am doing an assignment of web scrapping on google colab with beautifulsoup and requests. Here I am only scraping the headline of google news. Below is the code:
import requests
from bs4 import BeautifulSoup
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
print(soup.prettify())
beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
print(headlines.text)
The problem is that when I run the cell it neither shows the output (list of headlines) nor an error. Please help it is bugging me for 2 days.
python web-scraping beautifulsoup python-requests google-colaboratory
add a comment |
I am doing an assignment of web scrapping on google colab with beautifulsoup and requests. Here I am only scraping the headline of google news. Below is the code:
import requests
from bs4 import BeautifulSoup
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
print(soup.prettify())
beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
print(headlines.text)
The problem is that when I run the cell it neither shows the output (list of headlines) nor an error. Please help it is bugging me for 2 days.
python web-scraping beautifulsoup python-requests google-colaboratory
add a comment |
I am doing an assignment of web scrapping on google colab with beautifulsoup and requests. Here I am only scraping the headline of google news. Below is the code:
import requests
from bs4 import BeautifulSoup
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
print(soup.prettify())
beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
print(headlines.text)
The problem is that when I run the cell it neither shows the output (list of headlines) nor an error. Please help it is bugging me for 2 days.
python web-scraping beautifulsoup python-requests google-colaboratory
I am doing an assignment of web scrapping on google colab with beautifulsoup and requests. Here I am only scraping the headline of google news. Below is the code:
import requests
from bs4 import BeautifulSoup
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
print(soup.prettify())
beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
print(headlines.text)
The problem is that when I run the cell it neither shows the output (list of headlines) nor an error. Please help it is bugging me for 2 days.
python web-scraping beautifulsoup python-requests google-colaboratory
python web-scraping beautifulsoup python-requests google-colaboratory
asked Nov 22 '18 at 11:30
AnishaAnisha
25
25
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You probably need to display the text from the next span element. This could be done as follows:
import requests
from bs4 import BeautifulSoup
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
#print(soup.prettify())
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
print(headlines.find_next('span').text)
This would give you output starting something like:
I Take Back My Comment, Says Ram Madhav After Omar Abdullah’s Dare to Prove Pakistan Charge
Ram Madhav Backpedals On "Instruction From Pak" After Omar Abdullah Dare
National Conference backed PDP to save J&K from uncertainty: Omar Abdullah
On Ram Madhav ‘instruction from Pak’ barb, Omar Abdullah’s stinging reply
Make public reports of horse-trading in govt formation in J-K: Omar Abdullah to Guv
You could write the headlines to a CSV formatted file using the following approach:
import requests
from bs4 import BeautifulSoup
import csv
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
with open('output.csv', 'w', newline='', encoding='utf-8') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['Headline'])
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
headline = headlines.find_next('span').text
print(headline)
csv_output.writerow([headline])
Currently this just produces a single column called Headline
how do i convert this list into csv?
– Anisha
Nov 22 '18 at 13:02
What columns would you have? Currently this is just a single column.
– Martin Evans
Nov 22 '18 at 13:17
This was tested on my local PC so it was saved in the current folder. I am not able to say where Google colab would save it. I think you need to look atfiles.download()
– Martin Evans
Nov 22 '18 at 14:05
I wrote files.download('output.csv') it downloaded the output csv number of times the headline and it did not had any data each Excel file of 0kb
– Anisha
Nov 22 '18 at 14:12
I got it tested on my local PC got the output!
– Anisha
Nov 22 '18 at 14:26
add a comment |
Executing the following script, you should get the required results. If you used selector, the script would be much cleaner.
However, using .find_all():
import requests
from bs4 import BeautifulSoup
def get_headlines(url):
request = requests.get(url)
soup = BeautifulSoup(request.text,"lxml")
headlines = [item.find_next("span").text for item in soup.find_all("h3")]
return headlines
if __name__ == '__main__':
link = 'https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en'
for titles in get_headlines(link):
print(titles)
To do the same using .select(), bring out this change within the script:
headlines = [item.text for item in soup.select("h3 > a > span")]
return headlines
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53429996%2fwhy-am-i-not-getting-the-output-nor-an-error-in-web-scraping%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You probably need to display the text from the next span element. This could be done as follows:
import requests
from bs4 import BeautifulSoup
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
#print(soup.prettify())
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
print(headlines.find_next('span').text)
This would give you output starting something like:
I Take Back My Comment, Says Ram Madhav After Omar Abdullah’s Dare to Prove Pakistan Charge
Ram Madhav Backpedals On "Instruction From Pak" After Omar Abdullah Dare
National Conference backed PDP to save J&K from uncertainty: Omar Abdullah
On Ram Madhav ‘instruction from Pak’ barb, Omar Abdullah’s stinging reply
Make public reports of horse-trading in govt formation in J-K: Omar Abdullah to Guv
You could write the headlines to a CSV formatted file using the following approach:
import requests
from bs4 import BeautifulSoup
import csv
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
with open('output.csv', 'w', newline='', encoding='utf-8') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['Headline'])
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
headline = headlines.find_next('span').text
print(headline)
csv_output.writerow([headline])
Currently this just produces a single column called Headline
how do i convert this list into csv?
– Anisha
Nov 22 '18 at 13:02
What columns would you have? Currently this is just a single column.
– Martin Evans
Nov 22 '18 at 13:17
This was tested on my local PC so it was saved in the current folder. I am not able to say where Google colab would save it. I think you need to look atfiles.download()
– Martin Evans
Nov 22 '18 at 14:05
I wrote files.download('output.csv') it downloaded the output csv number of times the headline and it did not had any data each Excel file of 0kb
– Anisha
Nov 22 '18 at 14:12
I got it tested on my local PC got the output!
– Anisha
Nov 22 '18 at 14:26
add a comment |
You probably need to display the text from the next span element. This could be done as follows:
import requests
from bs4 import BeautifulSoup
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
#print(soup.prettify())
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
print(headlines.find_next('span').text)
This would give you output starting something like:
I Take Back My Comment, Says Ram Madhav After Omar Abdullah’s Dare to Prove Pakistan Charge
Ram Madhav Backpedals On "Instruction From Pak" After Omar Abdullah Dare
National Conference backed PDP to save J&K from uncertainty: Omar Abdullah
On Ram Madhav ‘instruction from Pak’ barb, Omar Abdullah’s stinging reply
Make public reports of horse-trading in govt formation in J-K: Omar Abdullah to Guv
You could write the headlines to a CSV formatted file using the following approach:
import requests
from bs4 import BeautifulSoup
import csv
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
with open('output.csv', 'w', newline='', encoding='utf-8') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['Headline'])
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
headline = headlines.find_next('span').text
print(headline)
csv_output.writerow([headline])
Currently this just produces a single column called Headline
how do i convert this list into csv?
– Anisha
Nov 22 '18 at 13:02
What columns would you have? Currently this is just a single column.
– Martin Evans
Nov 22 '18 at 13:17
This was tested on my local PC so it was saved in the current folder. I am not able to say where Google colab would save it. I think you need to look atfiles.download()
– Martin Evans
Nov 22 '18 at 14:05
I wrote files.download('output.csv') it downloaded the output csv number of times the headline and it did not had any data each Excel file of 0kb
– Anisha
Nov 22 '18 at 14:12
I got it tested on my local PC got the output!
– Anisha
Nov 22 '18 at 14:26
add a comment |
You probably need to display the text from the next span element. This could be done as follows:
import requests
from bs4 import BeautifulSoup
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
#print(soup.prettify())
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
print(headlines.find_next('span').text)
This would give you output starting something like:
I Take Back My Comment, Says Ram Madhav After Omar Abdullah’s Dare to Prove Pakistan Charge
Ram Madhav Backpedals On "Instruction From Pak" After Omar Abdullah Dare
National Conference backed PDP to save J&K from uncertainty: Omar Abdullah
On Ram Madhav ‘instruction from Pak’ barb, Omar Abdullah’s stinging reply
Make public reports of horse-trading in govt formation in J-K: Omar Abdullah to Guv
You could write the headlines to a CSV formatted file using the following approach:
import requests
from bs4 import BeautifulSoup
import csv
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
with open('output.csv', 'w', newline='', encoding='utf-8') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['Headline'])
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
headline = headlines.find_next('span').text
print(headline)
csv_output.writerow([headline])
Currently this just produces a single column called Headline
You probably need to display the text from the next span element. This could be done as follows:
import requests
from bs4 import BeautifulSoup
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
#print(soup.prettify())
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
print(headlines.find_next('span').text)
This would give you output starting something like:
I Take Back My Comment, Says Ram Madhav After Omar Abdullah’s Dare to Prove Pakistan Charge
Ram Madhav Backpedals On "Instruction From Pak" After Omar Abdullah Dare
National Conference backed PDP to save J&K from uncertainty: Omar Abdullah
On Ram Madhav ‘instruction from Pak’ barb, Omar Abdullah’s stinging reply
Make public reports of horse-trading in govt formation in J-K: Omar Abdullah to Guv
You could write the headlines to a CSV formatted file using the following approach:
import requests
from bs4 import BeautifulSoup
import csv
def beautiful_soup(url):
'''DEFINING THE FUNCTION HERE THAT SENDS A REQUEST AND PRETTIFIES THE TEXT
INTO SOMETHING THAT IS EASY TO READ'''
request = requests.get(url)
soup = BeautifulSoup(request.text, "lxml")
return soup
soup = beautiful_soup('https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en')
with open('output.csv', 'w', newline='', encoding='utf-8') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['Headline'])
for headlines in soup.find_all('a', {'class': 'VDXfz'}):
headline = headlines.find_next('span').text
print(headline)
csv_output.writerow([headline])
Currently this just produces a single column called Headline
edited Nov 22 '18 at 13:23
answered Nov 22 '18 at 11:53
Martin EvansMartin Evans
27.4k133054
27.4k133054
how do i convert this list into csv?
– Anisha
Nov 22 '18 at 13:02
What columns would you have? Currently this is just a single column.
– Martin Evans
Nov 22 '18 at 13:17
This was tested on my local PC so it was saved in the current folder. I am not able to say where Google colab would save it. I think you need to look atfiles.download()
– Martin Evans
Nov 22 '18 at 14:05
I wrote files.download('output.csv') it downloaded the output csv number of times the headline and it did not had any data each Excel file of 0kb
– Anisha
Nov 22 '18 at 14:12
I got it tested on my local PC got the output!
– Anisha
Nov 22 '18 at 14:26
add a comment |
how do i convert this list into csv?
– Anisha
Nov 22 '18 at 13:02
What columns would you have? Currently this is just a single column.
– Martin Evans
Nov 22 '18 at 13:17
This was tested on my local PC so it was saved in the current folder. I am not able to say where Google colab would save it. I think you need to look atfiles.download()
– Martin Evans
Nov 22 '18 at 14:05
I wrote files.download('output.csv') it downloaded the output csv number of times the headline and it did not had any data each Excel file of 0kb
– Anisha
Nov 22 '18 at 14:12
I got it tested on my local PC got the output!
– Anisha
Nov 22 '18 at 14:26
how do i convert this list into csv?
– Anisha
Nov 22 '18 at 13:02
how do i convert this list into csv?
– Anisha
Nov 22 '18 at 13:02
What columns would you have? Currently this is just a single column.
– Martin Evans
Nov 22 '18 at 13:17
What columns would you have? Currently this is just a single column.
– Martin Evans
Nov 22 '18 at 13:17
This was tested on my local PC so it was saved in the current folder. I am not able to say where Google colab would save it. I think you need to look at
files.download()– Martin Evans
Nov 22 '18 at 14:05
This was tested on my local PC so it was saved in the current folder. I am not able to say where Google colab would save it. I think you need to look at
files.download()– Martin Evans
Nov 22 '18 at 14:05
I wrote files.download('output.csv') it downloaded the output csv number of times the headline and it did not had any data each Excel file of 0kb
– Anisha
Nov 22 '18 at 14:12
I wrote files.download('output.csv') it downloaded the output csv number of times the headline and it did not had any data each Excel file of 0kb
– Anisha
Nov 22 '18 at 14:12
I got it tested on my local PC got the output!
– Anisha
Nov 22 '18 at 14:26
I got it tested on my local PC got the output!
– Anisha
Nov 22 '18 at 14:26
add a comment |
Executing the following script, you should get the required results. If you used selector, the script would be much cleaner.
However, using .find_all():
import requests
from bs4 import BeautifulSoup
def get_headlines(url):
request = requests.get(url)
soup = BeautifulSoup(request.text,"lxml")
headlines = [item.find_next("span").text for item in soup.find_all("h3")]
return headlines
if __name__ == '__main__':
link = 'https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en'
for titles in get_headlines(link):
print(titles)
To do the same using .select(), bring out this change within the script:
headlines = [item.text for item in soup.select("h3 > a > span")]
return headlines
add a comment |
Executing the following script, you should get the required results. If you used selector, the script would be much cleaner.
However, using .find_all():
import requests
from bs4 import BeautifulSoup
def get_headlines(url):
request = requests.get(url)
soup = BeautifulSoup(request.text,"lxml")
headlines = [item.find_next("span").text for item in soup.find_all("h3")]
return headlines
if __name__ == '__main__':
link = 'https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en'
for titles in get_headlines(link):
print(titles)
To do the same using .select(), bring out this change within the script:
headlines = [item.text for item in soup.select("h3 > a > span")]
return headlines
add a comment |
Executing the following script, you should get the required results. If you used selector, the script would be much cleaner.
However, using .find_all():
import requests
from bs4 import BeautifulSoup
def get_headlines(url):
request = requests.get(url)
soup = BeautifulSoup(request.text,"lxml")
headlines = [item.find_next("span").text for item in soup.find_all("h3")]
return headlines
if __name__ == '__main__':
link = 'https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en'
for titles in get_headlines(link):
print(titles)
To do the same using .select(), bring out this change within the script:
headlines = [item.text for item in soup.select("h3 > a > span")]
return headlines
Executing the following script, you should get the required results. If you used selector, the script would be much cleaner.
However, using .find_all():
import requests
from bs4 import BeautifulSoup
def get_headlines(url):
request = requests.get(url)
soup = BeautifulSoup(request.text,"lxml")
headlines = [item.find_next("span").text for item in soup.find_all("h3")]
return headlines
if __name__ == '__main__':
link = 'https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en'
for titles in get_headlines(link):
print(titles)
To do the same using .select(), bring out this change within the script:
headlines = [item.text for item in soup.select("h3 > a > span")]
return headlines
answered Nov 22 '18 at 11:58
SIMSIM
10.3k3743
10.3k3743
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53429996%2fwhy-am-i-not-getting-the-output-nor-an-error-in-web-scraping%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown