Выпуск соскоба сайта с bs4 (красивый суп) python 2.7 - PullRequest
2 голосов
/ 27 марта 2020

То, что я пытаюсь выполнить sh - это простой python веб-скрипт для поиска трендов Google, который сталкивается с проблемой при получении класса

from bs4 import BeautifulSoup
import requests


results = requests.get("https://trends.google.com/trends/trendingsearches/daily?geo=US")
soup = BeautifulSoup(results.text, 'lxml')
keyword_list = soup.find_all('.details-top')
for keyword in keyword_list:
    print(keyword)

При печати тег Я получаю пустой класс, однако, когда я печатаю суп, я получаю весь документ HTML. Моя цель состоит в том, чтобы распечатать текст каждого «ключевого слова», в котором был произведен поиск на странице https://trends.google.com/trends/trendingsearches/daily?geo=AU

, в котором содержится список результатов:

1. covid-19
2.Woolworths jobs

Если вы используете параметры разработчика Google, выберите «Inspect» и наведите указатель мыши на заголовок, вы увидите div.details-top .

как бы просто напечатать текст заголовка каждого

1 Ответ

1 голос
/ 27 марта 2020

Я вижу, что данные динамически извлекаются из вызова API на вкладке сети инструментов разработки. Вы можете ввести xhr для этого URL, а затем использовать регулярное выражение в тексте ответа для анализа заголовков запроса.

import requests, re
from bs4 import BeautifulSoup as bs

r = requests.get('https://trends.google.com/trends/api/dailytrends?hl=en-GB&tz=0&geo=AU&ns=15').text
p = re.compile(r'"query":"(.*?)"')
titles = p.findall(r)
print(titles) # 2.7 use print titles
...