gpt4 book ai didi

python-3.x - 为什么这个提取在示例上工作正常,但在真实 url 上却不行?

转载 作者:行者123 更新时间:2023-12-02 16:30:41 25 4
gpt4 key购买 nike

我正在尝试提取 href 的内容在类里面a , 在里面 <td class="DataZone"> .它在下面的例子中有效

from bs4 import BeautifulSoup

text = '''
<td class="DataZone"><div id="Content_CA_DI_0_DataZone">
<div style="font:bold 8pt 'Courier New';letter-spacing:-1px">
<a href="Browse-A">A</a> <a href="Browse-B">B</a> <a href="Browse-C">C</a> <a href="Browse-D">D</a>
</div>
</div></td>
'''

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

[tag.attrs['href'] for tag in soup.select('td.DataZone a')]

,结果为['Browse-A', 'Browse-B', 'Browse-C', 'Browse-D'] .当我将它应用到真正的 url 上时, 不幸的是它不起作用

import requests
session = requests.Session()
from bs4 import BeautifulSoup

url = 'https://www.thefreedictionary.com'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}
r = session.get(url, headers = headers)
soup = BeautifulSoup(r.content, 'html.parser')

[tag.attrs['href'] for tag in soup.select('td.DataZone a')]

返回错误

---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-12-0a06dde2d97b> in <module>
4 soup = BeautifulSoup(r.content, 'html.parser')
5
----> 6 [tag.attrs['href'] for tag in soup.select('td.DataZone a')]

<ipython-input-12-0a06dde2d97b> in <listcomp>(.0)
4 soup = BeautifulSoup(r.content, 'html.parser')
5
----> 6 [tag.attrs['href'] for tag in soup.select('td.DataZone a')]

KeyError: 'href'

很明显,url的来源与例子类似

enter image description here

能否解释一下为什么会出现这样的错误?


更新: [x['href'] for x in soup.select('td.DataZone a[href^=Browse]')] 对我来说很奇怪工作正常,但不是 [x['href'] for x in soup.select('td.DataZone a')] .也请详细说明这个问题。

最佳答案

你得到了错误,因为有很多 td.Datazone标签,其中一个标签内有 <a>Google+</a> - 没有 href .

您可以通过td.DataZone a[href]来选择仅选择 <a>带有 href 的标签属性:

print( [tag.attrs['href'] for tag in soup.select('td.DataZone a[href]')] )

关于python-3.x - 为什么这个提取在示例上工作正常,但在真实 url 上却不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63538180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com