Как искать совпадения нескольких строк на веб-странице с помощью запроса python

avatar
rbutrnz
8 августа 2021 в 23:42
128
1
1

Я хотел улучшить приведенный ниже фрагмент, передав несколько строк для поиска ("Английские субтитры", "1080", "2021") на веб-странице. В настоящее время он работает с однострочным поиском.

import requests
url = 'http://www.allyoulike.com/'
r = requests.get(url)

singlesearchstring = "2021"

multiplesearchstring = "English Subtitles", "4080", "2021"

if (stringtosearch) in r.text:
    print ('Found ',singlesearchstring )
else:
    print ('Not Found ', singlesearchstring)

Требуемый результат:

Search Results:
  English Subtitles - Found
  4080 - Not Found
  2021 - Found 
Источник

Ответы (1)

avatar
αԋɱҽԃ αмєяιcαη
8 августа 2021 в 23:44
3

вы можете сделать:

[(q, 'Found' if q.lower() in r.text.lower() else 'Not Found') for q in queries]
import requests

queries = ["English Subtitles", "4080", "2021"]


def main(url):
    r = requests.get(url)
    for q in queries:
        q = q.lower()
        if q in r.text.lower():
            print(q, 'Found')
        else:
            print(q, 'Not Found')


main('http://www.allyoulike.com/')

Обновленный ответ:

import requests
from bs4 import BeautifulSoup
import re
from pprint import pp

queries = ["English Subtitles", "4080", "2021"]


def get_line(q, soup):
    return [x for x in soup.findAll(text=re.compile('{!s}'.format(q)))]


def main(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'lxml')
    goal = [(q, 'Found', get_line(q, soup)) if q.lower()
            in r.text.lower() else (q, 'Not Found') for q in queries]

    pp(goal)


main('http://www.allyoulike.com/')

rbutrnz
8 августа 2021 в 23:56
0

можно ли просто вернуть всю строку, в которой найдена строка?

αԋɱҽԃ αмєяιcαη
9 августа 2021 в 00:12
1

@rbutrnz проверьте обновленный ответ и посмотрите на Как спросить