【问题标题】:Extract href target anchor text提取href目标锚文本
【发布时间】:2019-07-22 17:41:52
【问题描述】:

*更新:我现在得到了 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>,
  1. 获取每个起点和终点之间的文本。 (在这里,我想创建一个循环以从上面的列表中获取第一项和第二项,插入 re.search 并获取每个之间的所有文本。但我被困在这一点上。我无法让这个循环工作。我想我在将第一个和第二个数据点作为文本插入 re.search 函数时犯了一个错误。

    for i in enumerate(results): new_text=re.search(r''+re.escape(results[i])+re.escape('.*?')+re.escape(results(i+1)), 汤, re.DOTALL)。团体() 打印(新文本)

原问题:

假设我可以获得 Anchor Href 的链接,我如何提取文本中锚点 Href 点之间的文本?

所以基本上,我有

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

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

我想按照锚点 href 转到摘要页面,将所有文本拉到风险因素页面。

如:从

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

最多 风险因素

我的第一篇文章,所以请多多包涵。 :)

非常感谢。

这是目录页。我不需要这里的文字。这是为了显示anchor 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>

【问题讨论】:

标签: python html web-scraping beautifulsoup


【解决方案1】:

您想要文本,而不是实际的 href 值正确吗?文本值位于 &lt;a&gt; 标记内。所以做一个.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

如果碰巧有其他&lt;a&gt; 标签没有href,但您只想要带有href 的标签,您只需将其添加到您的find_all()

soup.find_all('a', href=True)

【讨论】:

  • 非常感谢您的回复。我要查找的文本不在 href 值旁边。它实际上是几个parapraph long,并在文本中列出了一些其他内容。这就像目录。
  • 哦,好的。我明白你在说什么。 href 将您带到那部分。因此,“摘要”的 href 为您提供摘要文本,“风险因素”的 href 为您提供风险因素文本。这些文本是在同一个 html 源中,还是转到新页面?无论哪种方式,我都需要查看这些段落的结构以及与这些段落关联的标签。是否可以发布网址或完整的html?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多