Динамически найти тег href - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь извлечь "Информационные технологии" как вывод из моего прекрасного поиска супа.Но я пока не могу понять, как «сектор» является динамическим значением для любого вида тикера в URL.

Может кто-нибудь посоветовать мне, как извлечь эту информацию?

<a href="http://eresearch.fidelity.com/eresearch/markets_sectors/sectors/sectors_in_market.jhtml?tab=learn&amp;sector=45">Information Technology</a>

Мой код:

url = 'https://eresearch.fidelity.com/eresearch/goto/evaluate/snapshot.jhtml?symbols=AAPL'

html = requests.get(url).text    
detail_tags_sector = BeautifulSoup(html, 'lxml')
detail_tags_sector.find_all('a')

Ответы [ 3 ]

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

Вы можете использовать любой из следующих вариантов.

import requests
from lxml.html.soupparser import fromstring
url = 'https://eresearch.fidelity.com/eresearch/goto/evaluate/snapshot.jhtml?symbols=AAPL'
html = requests.get(url).text
soup=fromstring(html)
findSearch = soup.xpath('//a[contains(text(), "Information Technology")]/text()')
print(findSearch[0])

Или

from bs4 import BeautifulSoup
from lxml import html
import requests
url = 'https://eresearch.fidelity.com/eresearch/goto/evaluate/snapshot.jhtml?symbols=AAPL'

html = requests.get(url).text
detail_tags_sector = BeautifulSoup(html, 'lxml')
for link in detail_tags_sector.find_all('a'):
    print(link.text)

ИЛИ

from bs4 import BeautifulSoup    
import requests
url = 'https://eresearch.fidelity.com/eresearch/goto/evaluate/snapshot.jhtml?symbols=AAPL'
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
for link in soup.find_all('a'):
    print(link.text)

Пожалуйста, дайте мне знать, если это поможет.

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

Проблема с этими ответами состоит в том, что они собирают текст всех ссылок на странице, и их довольно много.Если идея состоит в том, чтобы выбрать только строку information technology, все, что вам нужно сделать, это добавить:

info = soup.select_one('[href*="sectors_in"]')
print(info.text)

Вывод:

Information Technology
0 голосов
/ 18 февраля 2019

Чтобы получить текст из элемента привязки, вам нужно получить доступ к переменной .text на каждом из ваших элементов привязки
Таким образом, ваш код будет изменен на:

url = 'https://eresearch.fidelity.com/eresearch/goto/evaluate/snapshot.jhtml?symbols=AAPL'
contents = []

html = requests.get(url).text    
detail_tags_sector = BeautifulSoup(html, 'html.paser')
for anchor in detail_tags_sector.find_all('a'):
    contents.append(anchor.text)
print(contents)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...