Невозможно заставить find.all (string ='levision ') работать с BeautifulSoup (Python 3.x) - PullRequest
1 голос
/ 17 января 2020

Я создаю скребок для веб-страницы (первый раз) с намерением найти в нем конкретное c слово.

Я могу получить страницу и разобрать ее, но когда я пытаюсь использовать find.all () или даже find () для поиска string='television',

Я получаю 0 результатов. Слово там. Кроме того, если я пытаюсь найти find.all ('td'), он находит все 2000+ тегов, но когда я пытаюсь использовать строку, я получаю 0.

Вот код:

import urllib
import requests
from bs4 import BeautifulSoup

#get site
page_link = 
'https://www.txdot.gov/insdtdot/orgchart/cmd/cserve/bidtab/12033001.htm'
page_response = requests.get(page_link, timeout=5)
page_content = BeautifulSoup(page_response.content, "html.parser")

match = page_content.find_all(string="television")

print(len(match))

1 Ответ

0 голосов
/ 17 января 2020

Вы ищете текст TELEVISION, который является частичной строкой, содержащейся в теге td.

. Таким образом, чтобы достичь этого, вы можете использовать регулярное выражение .

import requests
from bs4 import BeautifulSoup
import re

page_link ='https://www.txdot.gov/insdtdot/orgchart/cmd/cserve/bidtab/12033001.htm'
page_response = requests.get(page_link, timeout=5)
page_content = BeautifulSoup(page_response.content, "html.parser")
match = page_content.find_all(text=re.compile("TELEVISION"))
print(len(match))

Или, если у вас beautifulsoup 4.7.1 или выше, вы можете использовать css selector и содержит.

import requests
from bs4 import BeautifulSoup

page_link ='https://www.txdot.gov/insdtdot/orgchart/cmd/cserve/bidtab/12033001.htm'
page_response = requests.get(page_link, timeout=5)
page_content = BeautifulSoup(page_response.content, "html.parser")
match = page_content.select('td:contains(TELEVISION)')
print(len(match))

Обратите внимание, что вы должны использовать точный текст, который у вас есть на веб-страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...