Помогите с скриптом на Python по поиску ключевых слов по сайтам
Есть набросок скрипта который на данный момент может брать элементы со страницы(только одной) и выдавать базовую информацию. Вопрос заключается в том, как можно сделать чтобы ссылки он брал из текстовика и искал ссылки в которых будет ключевое слово, которое будут вводить.
from bs4 import BeautifulSoup as BS
# links = open('links.txt', 'r')
# data = links.readlines()
def parsing():
URL = 'https://www.olx.pl/elektronika/komputery/'
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(URL, headers=HEADERS)
soup = BS(response.content, 'html.parser')
items = soup.find_all('div', class_="offer-wrapper")
# s1 = input("Enter your key: ")
comps = []
for item in items:
comps.append({
'title': item.find('a', class_='marginright5 link linkWithHash detailsLinkPromoted').get_text(strip = True),
'link': item.find('a', class_='marginright5 link linkWithHash detailsLinkPromoted').get('href')
})
for comp in comps:
print(f"{comp['title']} -> Link {comp['link']}")
# links.close()
parsing()
Ответы (1 шт):
Автор решения: Evgeniy
→ Ссылка
Проверить нет возможности, но логика работы верная:
import requests
from bs4 import Beautifulsoup as bs
urls = open('urls.txt', 'r')
url_list = list(urls)
keyword = input('Write keyword')
for url in url_list:
r = requests.get(url)
soup = bs(r.content, 'lxml')
if soup.find_all(text=keyword):
print(url)
В соответствии с пожеланиями:
import requests
from bs4 import Beautifulsoup as bs
urls = open('urls.txt', 'r')
url_list = list(urls)
keyword = input('Write keyword')
for url in url_list:
r = requests.get(url)
soup = bs(r.content, 'lxml')
finded = soup.find_all(text=keyword)
if finded:
print(url)
for each in finded:
print(each)
print('END WITH THIS URL')
Еще вариант:
for url in url_list:
r = requests.get(url)
soup = bs(r.content, 'lxml')
finded = soup.find_all('a' href=True)
if finded:
print(url)
for each in finded:
if keyword in each:
print(each)
print('END WITH THIS URL')