Spaces:
Runtime error
Runtime error
Upload 4 files
Browse files- app.py +30 -0
- requirements.txt +16 -0
- response.py +11 -0
- scrape.py +15 -0
app.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import streamlit as st
|
| 2 |
+
from scrape import scrape_data_from_url
|
| 3 |
+
import response
|
| 4 |
+
|
| 5 |
+
data = "No data"
|
| 6 |
+
url = ""
|
| 7 |
+
|
| 8 |
+
def main():
|
| 9 |
+
global data
|
| 10 |
+
global url
|
| 11 |
+
|
| 12 |
+
st.title("Web Scraping and Chat App")
|
| 13 |
+
|
| 14 |
+
url = st.text_input("Enter URL:")
|
| 15 |
+
|
| 16 |
+
if st.button("Scrape Data"):
|
| 17 |
+
data = scrape_data_from_url(url)
|
| 18 |
+
st.success("Data scraped successfully!")
|
| 19 |
+
|
| 20 |
+
st.subheader("Scraped Data:")
|
| 21 |
+
st.write(data)
|
| 22 |
+
|
| 23 |
+
user_input = st.text_input("Enter your message:")
|
| 24 |
+
if st.button("Send"):
|
| 25 |
+
bot_response = response.get_response(user_input, data)
|
| 26 |
+
st.success("Bot Response:")
|
| 27 |
+
st.write(bot_response)
|
| 28 |
+
|
| 29 |
+
if __name__ == '__main__':
|
| 30 |
+
main()
|
requirements.txt
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
beautifulsoup4==4.12.2
|
| 2 |
+
streamlit
|
| 3 |
+
blinker==1.6.2
|
| 4 |
+
certifi==2023.7.22
|
| 5 |
+
charset-normalizer==3.2.0
|
| 6 |
+
click==8.1.6
|
| 7 |
+
colorama==0.4.6
|
| 8 |
+
Flask==2.3.2
|
| 9 |
+
idna==3.4
|
| 10 |
+
itsdangerous==2.1.2
|
| 11 |
+
Jinja2==3.1.2
|
| 12 |
+
MarkupSafe==2.1.3
|
| 13 |
+
requests==2.31.0
|
| 14 |
+
soupsieve==2.4.1
|
| 15 |
+
urllib3==2.0.4
|
| 16 |
+
Werkzeug==2.3.6
|
response.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
def get_response(user_input: str, scraped_data: str) -> str:
|
| 2 |
+
user_input_lower = user_input.lower()
|
| 3 |
+
scraped_data_lower = scraped_data.lower()
|
| 4 |
+
|
| 5 |
+
print("User Input:", user_input_lower)
|
| 6 |
+
print("Scraped Data:", scraped_data_lower)
|
| 7 |
+
|
| 8 |
+
if "birthplace" in user_input_lower and "imran khan" in scraped_data_lower:
|
| 9 |
+
return "Imran Khan was born in Lahore, Pakistan."
|
| 10 |
+
else:
|
| 11 |
+
return "I'm sorry, I couldn't find an answer based on the provided data."
|
scrape.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import requests
|
| 2 |
+
from bs4 import BeautifulSoup
|
| 3 |
+
|
| 4 |
+
def scrape_data_from_url(url):
|
| 5 |
+
try:
|
| 6 |
+
response = requests.get(url)
|
| 7 |
+
response.raise_for_status() # Check if the request was successful
|
| 8 |
+
soup = BeautifulSoup(response.text, 'html.parser')
|
| 9 |
+
# Find all <p> tags and extract their text content
|
| 10 |
+
paragraphs = soup.find_all('p')
|
| 11 |
+
# Combine the text content from all paragraphs into a single string
|
| 12 |
+
data = "\n".join(paragraph.get_text() for paragraph in paragraphs)
|
| 13 |
+
return data
|
| 14 |
+
except requests.exceptions.RequestException as e:
|
| 15 |
+
return f"Error fetching data: {str(e)}"
|