网页抓取维基百科页面

2024-09-29 19:32:21 发布

您现在位置:Python中文网/ 问答频道 /正文

在维基百科的一些页面中,文章标题后(以粗体显示),括号内有一些文本用于解释标题中单词的发音和语音。例如,在this上,在<p>中的粗体标题diglossia之后,有一个左括号。为了找到对应的右括号,必须逐个遍历文本节点来找到它,这很简单。我要做的是找到下一个href链接并存储它。在

这里的问题是(AFAIK),没有一种方法可以用右括号唯一地标识文本节点,然后获取以下href。是否有任何直接(非卷积)的方法来获得初始括号之外的第一个链接?

编辑

对于这里提供的链接,要存储的href应该是:https://en.wikipedia.org/wiki/Dialects,因为这是括号外的第一个链接


Tags: 方法文本标题节点链接文章语音页面
1条回答
网友
1楼 · 发布于 2024-09-29 19:32:21

这是你想要的吗?在

import requests
rs = requests.get('https://en.wikipedia.org/wiki/Diglossia', verify=False)
parsed_html = BeautifulSoup(rs.text)
print parsed_html.body.findAll('p')[0].findAll('a')[0]

这样可以得到:

^{pr2}$

如果要提取href,则可以使用以下命令:

parsed_html.body.findAll('p')[0].findAll('a')[0].attrs[0][1]

更新 似乎您需要的是括号后的href,而不是前面的括号。 我已经为它写了剧本。试试这个:

import requests
from BeautifulSoup import BeautifulSoup
rs = requests.get('https://en.wikipedia.org/wiki/Diglossia', verify=False)
parsed_html = BeautifulSoup(rs.text)

temp = parsed_html.body.findAll('p')[0]

start_count = 0
started = False
found = False

while temp.next and found is False:
    temp = temp.next
    if '(' in temp:
        start_count += 1
        if started is False:
            started = True
    if ')' in temp and started and start_count > 1:
        start_count -= 1
    elif ')' in temp and started and start_count == 1:
        found = True

print temp.findNext('a').attrs[0][1]

相关问题 更多 >

    热门问题