【发布时间】:2017-08-26 09:00:12
【问题描述】:
我正在为this problem 创建一个 python 解决方案,但我无法通过一些边缘情况。
我遇到的问题出现在像this 这样的页面上,其中this link 是应该被提取的页面,因为它是括号外的第一个页面。相反,有些文章是like this,其中链接出现在第一个括号之前。
我目前处理这些情况的方式是首先遍历第一个段落标记(字符串化版本)中的元素和文本,并检查在 '(' 和 <a> 之间首先找到哪个。如果先找到<a>(意思是在到达括号之前),我就拿那个链接。如果先找到括号,我等到括号关闭,然后再取下面的'
实际上,我只是获得了第一段元素的直接子元素,可以通过以下方式完成:
soup = BeautifulSoup(response.content, "lxml")
soup.select_one("#mw-content-text > p > a")
我认为在这里可行的是使用这样的选择语句来查找前缀中的第一个链接,从<p> 的开头直到第一个括号,或者(如果前缀中没有链接)find紧跟在右括号后面的链接使用类似于我目前正在做的事情:
`findNext('a').attrs['href']`
如果要使用这种方法,则会出现多个问题,包括: 1.如何实际获取前缀直到第一个括号只有'的直接子元素
有没有一种简化的方法来做到这一点?如果有更好的方法,会是什么?
【问题讨论】:
-
如何重新制定问题,例如“获取不在括号内的第一个链接 - 在它们之前或之后”?..
标签: python html parsing web-scraping beautifulsoup