нет печати после сценария Python, без ошибок - PullRequest
0 голосов
/ 24 февраля 2019

Нет ошибок, просто не печатать результаты.он должен распечатывать заголовки с URL.скрипт выполняется, но ничего не возвращает во время синтаксического анализа для balancedheadlines.я могу поменять тег, который я ищу, на p и вернуть данные, но я верю, что не могу правильно пройти через теги, чтобы получить только заголовки.

import requests
from bs4 import BeautifulSoup

url = 'http://www.nytimes.com'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')


for ap in soup.find_all('h2', attrs = {"class" : "balancedheader"}):

    if ap.a:
        print(ap.a.text.replace(".n/", " "))
    else:
        print(ap.strip)

Ответы [ 3 ]

0 голосов
/ 24 февраля 2019

NY Times веб-сайт не имеет элемента 'h2' с классом с именем «balheader ».

xpath '// h2 [@ class =' ​​сбалансированный заголовок ']' возвращает пустой набор.

0 голосов
/ 24 февраля 2019

Вы сказали he script runs but returns nothing whilst parsing for balancedheadlines, но пытаетесь найти balancedheader.На вашем сайте нет сбалансированного заголовка. Вы можете увидеть все теги h2, например:

h2_tags = soup.findAll('h2')
for allh2 in h2_tags:
    print allh2

Выше кода вернет все теги h2 на вашем сайте.

Я думаю, вы пытаетесьполучить заголовок в balancedHeadline и его в Javascript, поэтому вам нужно использовать Selenium:

from selenium import webdriver

options = webdriver.ChromeOptions()
driver=webdriver.Chrome(chrome_options=options, executable_path=r'your driver path')
driver.get('https://www.nytimes.com/2019/02/24/world/europe/pope-vatican-sexual-abuse.html')

x = driver.find_elements_by_css_selector("span[class='balancedHeadline']")

for title in x:
    print title.text
driver.close()

ВЫХОД:

Pope Francis Ends Landmark Meeting by Calling for ‘All-Out Battle’ to Fight Sexual Abuse
0 голосов
/ 24 февраля 2019

Я исправил вашу проблему, вы не делаете отступ правильно, и когда вы импортируете что-то, убедитесь, что «i» в «import» не является заглавной.Фиксированная версия:

import requests
from bs4 import BeautifulSoup

url = 'http://www.nytimes.com'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')


for ap in soup.find_all('h2', attrs = {"class" : "balancedheader"}):
    if ap.a:
        print(ap.a.text.replace(".n/", " "))
    else:
        print(ap.strip)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...