python - 如何使用 Python 从容器内的文本中抓取 Td

标签 python beautifulsoup

我正在尝试从容器内抓取文本,但我无法弄清楚如何抓取其中的一些文本。

此代码适用于抓取工具,该抓取工具从格式如下的网页中为每个条目提取三列:

<td class="EP">1</td>
</tr>
<tr class="EG">
<td>
</td>
<td>
<a href="https://www.COMPANYWEBSITE/">COMPANY NAME</a>
</td>
<td DO="9999">
<div class="BN">9999</div>
<img src="https://www.IMAGE.com">
</td>
<td>
Keyword 1, Keyword 2, Keyword 3, Keyword 4
</td>
<td>New York City</td>
<td>USA</td>

我已成功抓取公司名称和 BN(即 9999),但我还需要抓取每个关键字,这就是我遇到麻烦的地方。

我使用了以下 Python 代码:

page_soup = soup(page_html, "html.parser") 
TT = page_soup.findAll("tr",{"class":"EG"})
container = TT[0]

for container in TT:

    company_name = container.a.text

    b_n = container.div.text

    keywords = container.?????

我不知道如何将关键字输入到我的输出中。任何帮助将不胜感激。

最佳答案

你可以使用第n种类型

from bs4 import BeautifulSoup as bs

html = '''
<td class="EP">1</td>
</tr>
<tr class="EG">
<td>
</td>
<td>
<a href="https://www.COMPANYWEBSITE/">COMPANY NAME</a>
</td>
<td DO="9999">
<div class="BN">9999</div>
<img src="https://www.IMAGE.com">
</td>
<td>
Keyword 1, Keyword 2, Keyword 3, Keyword 4
</td>
<td>New York City</td>
<td>USA</td>

'''

page_soup = bs(html, 'lxml')
TT = page_soup.findAll("tr",{"class":"EG"})
for container in TT:
    print(container.select_one('td:nth-of-type(4)').text)

关于python - 如何使用 Python 从容器内的文本中抓取 Td,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55973128/

相关文章:

python - 如何从 HTML 文件中的某一行开始抓取数据

python - BeautifulSoup 使用可迭代而不是字符串?

python - 我想将一个数据框附加到另一个数据框,即使它们的大小不同

python - 在值数组上调用 random.normal 会增加噪音吗?

python - 将空行转换为 Pandas 中的列

python - 如何将本地镜像(svg/png)添加到绘图布局?

python - 用 Python 解析一个非常大的文本文件?

python - 使用 beautiful soup 4 抓取 <p class ="postbody"> 标签内的 URL 并将其保存到文本文件中

python - 使用 Python 和 BeautifulSoup 抓取多个页面