Невозможно получить заголовки контента во время удаления - PullRequest
1 голос
/ 22 мая 2019

Я новичок в очистке, но я попробовал все методы, чтобы решить эту проблему, но не получил желаемых результатов. Я хочу удалить этот сайт https://www.accesswire.com/newsroom/ и хочу удалить все заголовки, заголовки появляются, когда я проверяю их в браузере, но после очистки с помощью bs4 или selenium я не получаю полный исходный код страницы, а также не получайте заголовки также.

Я пытался time.sleep(10), но это также не работает для меня. Я использовал селен, чтобы получить страницу, но это также не сработало бы и для меня. div.column-15 w-col w-col-9 это класс, где находятся заголовки

ua     = UserAgent()
header = {'user-agent':ua.chrome}
url = "https://www.accesswire.com/newsroom/"
response = requests.get(url, headers=header)
time.sleep(12)
soup = BeautifulSoup(response.content, 'html.parser')
time.sleep(12)
headline_Div = soup.find("div",{"class":"column-15 w-col w-col-9"})
print(headline_Div)

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

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Вам не нужен селен.Просто используйте более эффективные запросы и API, который использует страница

import re
import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.accesswire.com/api/newsroom.ashx')
p = re.compile(r" \$\('#newslist'\)\.after\('(.*)\);")
html = p.findall(r.text)[0]
soup = bs(html, 'lxml')
headlines = [(item.text, item['href']) for item in soup.select('a.headlinelink')]
print(headlines)

Regex объяснение:

image

Попробуйте regex здесь

0 голосов
/ 22 мая 2019

Если pull и parse не работает, потому что контент динамический, вам потребуется селен, чтобы реальный браузер генерировал контент для вас

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('https://www.accesswire.com/newsroom/')
headline_links = driver.find_elements_by_css_selector('a.headlinelink')
headlines = [link.get_attribute('textContent') for link in headline_links]
...