【问题标题】:Python can't scrape tag linkPython 无法抓取标签链接
【发布时间】:2021-01-10 02:34:20
【问题描述】:

我正在使用 python 3.7 和 BeautifulSoup 来抓取 Wordpress 提要。我无法从链接标签中抓取数据。所有其他标签都有效。如果我重命名标签,它会起作用。这是一个剥离的 xml 示例 -

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<site xmlns="com-wordpress:feed-additions:1">12345</site>
    <item>
        <title>My title</title>
        <link>https://test.com/test/</link>
        <linktest>https://test.com/test/</linktest>
    </item>
</channel>
</rss>

如果我这样解析 -

soup = BeautifulSoup(open('./sources/falskanyheter.xml', 'r'), 'lxml')
print(soup.prettify())

我得到了结果-

<?xml version="1.0" encoding="UTF-8"?>
<html>
 <body>
  <rss version="2.0">
   <channel>
    <site xmlns="com-wordpress:feed-additions:1">
     12345
    </site>
    <item>
     <title>
      My title
     </title>
     <link/>
     https://test.com/test/
     <linktest>
      https://test.com/test/
     </linktest>
    </item>
   </channel>
  </rss>
 </body>
</html>

链接/url不在链接标签中,无法解析,例如-tag.link.text

【问题讨论】:

标签: python beautifulsoup


【解决方案1】:

我在 open 函数中将 lxml 切换为 xml 并且它可以工作。我以为我已经测试过了,但是当我这样做时,我可能还会遇到其他错误。好吧,它有效 - 感谢我和很好的回答。

【讨论】:

    【解决方案2】:

    恭喜!这里提供另一种方法,仅供参考。

    from simplified_scrapy import SimplifiedDoc
    
    html = '''
    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0">
    <channel>
    <site xmlns="com-wordpress:feed-additions:1">12345</site>
        <item>
            <title>My title</title>
            <link>https://test.com/test/</link>
            <linktest>https://test.com/test/</linktest>
        </item>
    </channel>
    </rss>
    '''
    doc = SimplifiedDoc(html)
    nodes = doc.select('item').children
    print([(node.tag,node.text) for node in nodes])
    

    结果:

    [('title', 'My title'), ('link', None), ('linktest', 'https://test.com/test/')]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2015-11-11
      • 2021-05-20
      • 1970-01-01
      • 2018-06-02
      相关资源
      最近更新 更多