Python BeautifulSoup-查找具有特定属性值的标记不会';工作不好

Python BeautifulSoup-查找具有特定属性值的标记不会';工作不好,python,beautifulsoup,attributes,Python,Beautifulsoup,Attributes,我不熟悉python爬行。我玩了find(tag,attribute='value')并发现了一些有趣的结果 代码如下: from bs4 import BeautifulSoup html = ''' <a class="cluster_text_headline nclicks(cls_pol.clsart)" href="https://news.naver.com/main/read.nhn?mode=LSD&amp;mid=shm&amp;sid1=100&am

我不熟悉python爬行。我玩了
find(tag,attribute='value')
并发现了一些有趣的结果

代码如下:

from bs4 import BeautifulSoup

html = '''
<a class="cluster_text_headline nclicks(cls_pol.clsart)" href="https://news.naver.com/main/read.nhn?mode=LSD&amp;mid=shm&amp;sid1=100&amp;oid=421&amp;aid=0004679941">text1</a>
<a class="cluster_text_headline nclicks(cls_pol.clsart)" href="https://news.naver.com/main/read.nhn?mode=LSD&amp;mid=shm&amp;sid1=100&amp;oid=032&amp;aid=0003013328">text2</a>
<a class="cluster_text_headline nclicks(cls_pol.clsart)" href="https://news.naver.com/main/read.nhn?mode=LSD&amp;mid=shm&amp;sid1=100&amp;oid=052&amp;aid=0001449034">text3</a>
<a class="cluster_text_headline nclicks(cls_pol.clsart)" href="https://news.naver.com/main/read.nhn?mode=LSD&amp;mid=shm&amp;sid1=100&amp;oid=055&amp;aid=0000819508">text4</a>
<a class="cluster_text_headline nclicks(cls_pol.clsart)" href="https://www.test.com">text5</a>

'''
soup = BeautifulSoup(html, 'html.parser')
a_tags = soup.find('a', href="https://www.test.com")
print(a_tags)
从bs4导入美化组
html=“”
'''
soup=BeautifulSoup(html,'html.parser')
a_tags=soup.find('a',href='https://www.test.com")
打印(a_标签)
这将按预期返回


但是当我将
.find()
中的属性值替换为
时https://news.naver.com/main/read.nhn?mode=LSD&mid=shm&;sid1=100&;oid=032&;aid=0003013328'
(代码中的第二个链接),
None
返回。如果有人能解释为什么结果因URL而异,我们将不胜感激。

这是由bs4使用的html解析器和
&在你的hrefs中:当它解析你的html源代码时

soup = BeautifulSoup(html, 'html.parser')
它取消了scape
&,转换
&进入
。(见:)

它显然不会对传递给
find

a_tags = soup.find('a', href='https://news.naver.com/main/read.nhn?mode=LSD&amp;mid=shm&amp;sid1=100&amp;oid=032&amp;aid=0003013328')
因此,它最终尝试匹配您的(转义)href值
https://news.naver.com/main/read.nhn?mode=LSD&mid=shm&;sid1=100&;oid=032&;aid=0003013328

针对源文件中的unescaped href属性

…而且失败了。另一方面,它返回“预期”结果:

html=''
'''
如果名称=“\uuuuu main\uuuuuuuu”:
soup=BeautifulSoup(html,'html.parser')
a_tags=soup.find('a',href='https://news.naver.com/main/read.nhn?mode=LSD&mid=shm&sid1=100&oid=032&aid=0003013328')
打印(a_标签)
a_tags=soup.find('a',href='https://www.test.com')
打印(a_标签)
html = '''
<a href="https://news.naver.com/main/read.nhn?mode=LSD&amp;mid=shm&amp;sid1=100&amp;oid=032&amp;aid=0003013328">text2</a>
<a class="cluster_text_headline nclicks(cls_pol.clsart)" href="https://www.test.com">text5</a>
'''

if __name__ == "__main__":
    soup = BeautifulSoup(html, 'html.parser')
    a_tags = soup.find('a', href='https://news.naver.com/main/read.nhn?mode=LSD&mid=shm&sid1=100&oid=032&aid=0003013328')
    print(a_tags)
    a_tags = soup.find('a', href='https://www.test.com')
    print(a_tags)