网页刮一个维基百科页面
在某些维基百科页面中,在文章标题(以粗体显示)之后,括号内有一些文字用于解释标题中单词的发音和语音。 例如,在这里,在<p>
的粗体标题diglossia之后,有一个左括号。 为了找到相应的右括号,您必须逐个遍历文本节点才能找到它,这很简单。 我想要做的是找到下一个href链接并存储它。
这里的问题是(AFAIK),没有办法用左括号唯一标识文本节点,然后获得以下href。 是否有任何直接的(而不是复杂的)方式来获得第一个括号外的第一个链接?
编辑
在这里提供的链接中,要存储的href应该是:https://en.wikipedia.org/wiki/Dialects,因为这是括号外的第一个链接
这是你想要的吗?
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]
这给出:
<a href="/wiki/Linguistics" title="Linguistics">linguistics</a>
如果你想提取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]
链接地址: http://www.djcxy.com/p/62851.html
上一篇: Web Scraping a wikipedia page
下一篇: Getting all Wikipedia articles with coordinates inside London