Извлечь href целевой текст привязки - PullRequest
0 голосов
/ 28 февраля 2019

* Обновление: теперь я получил ссылки Href.Просто нужно выполнить поиск, чтобы получить весь текст между каждым элементом.

Вот мой код: 1. получить начальные и конечные данные.

import requests
from bs4 import BeautifulSoup
import re
import urllib
new_text=urllib.request.urlopen("https://www.sec.gov/Archives/edgar/data/1294017/000119312505142547/0001193125-05-142547.txt") 
soup = BeautifulSoup(new_text, 'lxml')
results = soup.findAll("a", {"name" : True})
print(results)

Итак, я получаю следующие данные:

<a name="toc"></a>, <a name="toc51579_1"></a>, <a name="toc51579_2"></a>,

Получить текст между каждой начальной и конечной точками.(здесь я хотел бы сделать цикл, чтобы получить первый и второй элемент из списка выше, вставить в re.search и получить все тексты между ними. Но я застрял в этой точке. Я не могу заставить этот цикл работать. Я думаю,Я делаю ошибку при вставке первой и второй точек данных в функцию re.search в виде текста.

для i в enumerate (results): new_text = re.search (r '' + re.escape (results[i]) + re.escape ('. *?') + re.escape (результаты (i + 1)), суп, re.DOTALL) .group () print (новый_текст)

Оригинальный вопрос:

Предполагая, что я могу получить ссылки Anchor Href, как я могу извлечь текст между точками привязки точки Href в тексте?

Так что в основном у меня есть

<A HREF="#toc51579_1">Summary</A>

и

<A HREF="#toc51579_2">Risk Factors</A>

И я хочу последовать за якорем, чтобы перейти на страницу «Сводка», перетащить весь текст на страницу «Факторы риска».

Например: Начать с

<A NAME="toc51579_1"></A>Summary </B></FONT></P>

до факторов риска

Мой первый пост, поэтому, пожалуйста, потерпите меня.:)

Большое спасибо.

Tего страница оглавления.Мне не нужен текст здесь.Это показывает, где находятся якорные Hrefs.

    <TR>
<TD WIDTH="88%"></TD>
<TD VALIGN="bottom" WIDTH="8%"></TD>
<TD></TD></TR>
<TR>
<TD VALIGN="bottom"><FONT SIZE="1">&nbsp;</FONT></TD>
<TD VALIGN="bottom"><FONT SIZE="1">&nbsp;&nbsp;</FONT></TD>
<TD VALIGN="bottom" ALIGN="center" STYLE="border-bottom:1px solid #000000"><FONT STYLE="font-family:Times New Roman" SIZE="1"><B>Page</B></FONT></TD></TR>
<TR>
<TD VALIGN="top"> <P STYLE="margin-left:1.00em; text-indent:-1.00em"><FONT STYLE="font-family:Times New Roman" SIZE="2"><A HREF="#toc51579_1">Summary</A></FONT></P></TD>
<TD VALIGN="bottom"><FONT SIZE="1">&nbsp;&nbsp;</FONT></TD>
<TD VALIGN="bottom" ALIGN="right"><FONT STYLE="font-family:Times New Roman" SIZE="2">1</FONT></TD></TR>
<TR>
<TD VALIGN="top"> <P STYLE="margin-left:1.00em; text-indent:-1.00em"><FONT STYLE="font-family:Times New Roman" SIZE="2"><A HREF="#toc51579_2">Risk Factors</A></FONT></P></TD>
<TD VALIGN="bottom"><FONT SIZE="1">&nbsp;&nbsp;</FONT></TD>
<TD VALIGN="bottom" ALIGN="right"><FONT STYLE="font-family:Times New Roman" SIZE="2">15</FONT></TD></TR>

1 Ответ

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

Вы хотите, чтобы текст, а не действительные значения href были правильными?Текстовые значения находятся внутри тегов <a>.Так что .find_all('a').Затем выполните итерацию по этим элементам, и для получения текста мы используем .text

html = '''    <TR>
<TD WIDTH="88%"></TD>
<TD VALIGN="bottom" WIDTH="8%"></TD>
<TD></TD></TR>
<TR>
<TD VALIGN="bottom"><FONT SIZE="1">&nbsp;</FONT></TD>
<TD VALIGN="bottom"><FONT SIZE="1">&nbsp;&nbsp;</FONT></TD>
<TD VALIGN="bottom" ALIGN="center" STYLE="border-bottom:1px solid #000000"><FONT STYLE="font-family:Times New Roman" SIZE="1"><B>Page</B></FONT></TD></TR>
<TR>
<TD VALIGN="top"> <P STYLE="margin-left:1.00em; text-indent:-1.00em"><FONT STYLE="font-family:Times New Roman" SIZE="2"><A HREF="#toc51579_1">Summary</A></FONT></P></TD>
<TD VALIGN="bottom"><FONT SIZE="1">&nbsp;&nbsp;</FONT></TD>
<TD VALIGN="bottom" ALIGN="right"><FONT STYLE="font-family:Times New Roman" SIZE="2">1</FONT></TD></TR>
<TR>
<TD VALIGN="top"> <P STYLE="margin-left:1.00em; text-indent:-1.00em"><FONT STYLE="font-family:Times New Roman" SIZE="2"><A HREF="#toc51579_2">Risk Factors</A></FONT></P></TD>
<TD VALIGN="bottom"><FONT SIZE="1">&nbsp;&nbsp;</FONT></TD>
<TD VALIGN="bottom" ALIGN="right"><FONT STYLE="font-family:Times New Roman" SIZE="2">15</FONT></TD></TR>'''

import bs4

soup = bs4.BeautifulSoup(html, 'html.parser')

alpha = soup.find_all('a')

for ele in alpha:
    print (ele.text)

Вывод:

Summary
Risk Factors

Если есть другие <a> тегов, которые не имеют href, но вам нужны только те, которые имеют href, вы просто добавляете это в свой find_all()

soup.find_all('a', href=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...