如何在Wiki中抓取第一段链接?
括号中的所有链接均应排除。作为示例,我提供以下链接:
https://en.wikipedia.org/wiki/Data。
在此页面上,我要抓取的第一个链接是“ 定性” (href =“ / wiki / Qualitative_property”)。我的代码排除了所有特殊链接,例如脚注和发音,但不能排除括号中的普通链接。
import requests
from bs4 import BeautifulSoup
response = requests.get('https://en.wikipedia.org/wiki/Data')
html = response.text
soup = BeautifulSoup(html, "html.parser")
link = soup.find(id='mw-content-text').find(class_="mw-parser-output").find_all('p', recursive=False)
list_a = []
for element in link:
if element.find("a", recursive=False):
print(element.find("a", recursive=False).get('href'))
break
答案 0 :(得分:0)
从技术上来讲,这些链接与括号外的链接没有区别。如果您仔细查看这些链接的 href 属性,它们全都以 / wiki / Help:开头,因此,如果发生这种情况,可以将其排除在外。在下面的代码中,我使用了正则表达式:
import re
import requests
from bs4 import BeautifulSoup
response = requests.get('https://en.wikipedia.org/wiki/Data')
html = response.text
soup = BeautifulSoup(html, "html.parser")
paragraphs = soup.find(id='mw-content-text').find(class_="mw-parser-output").find_all('p', recursive=False)
list_a = []
# Help links RegEx
help_link_regex = re.compile('^/wiki/Help:')
for p in paragraphs:
p_links = p.find_all("a", recursive=False)
for link in p_links:
# Leave them out if they match the previous RegEx
if not help_link_regex.match(link.get('href')):
print(link.get('href'))
list_a.append(link.get('href'))
break
/wiki/Qualitative_property
/wiki/Information
/wiki/Measurement
/wiki/Data_(word)
/wiki/Information
/wiki/Knowledge
/wiki/Sign
/wiki/Marketing
/wiki/Analog_computer
/wiki/Johanna_Drucker
请注意,此列表中的第一个链接是第一段中的第一个链接(括号外):您想要的链接。
前面的代码只是将每个段落的第一个非帮助链接添加到list_a
,如果要全部获取,只需删除break
:>
break
之后)/wiki/Qualitative_property
/wiki/Quantitative_data
/wiki/Variable_(research)
/wiki/Information
/wiki/Scientific_research
/wiki/Stock_price
/wiki/Crime_rate
/wiki/Unemployment_rate
/wiki/Literacy
/wiki/Homelessness
/wiki/Measurement
/wiki/Data_reporting
/wiki/Data_analysis
/wiki/Data_visualization
/wiki/Concept
/wiki/Information
/wiki/Knowledge
/wiki/Data_processing
/wiki/Number
/wiki/Character_(computing)
/wiki/Outlier
/wiki/Field_work
/wiki/In_situ
/wiki/Experimental_data
/wiki/Petroleum
/wiki/Digital_economy
/wiki/Data_(word)
/wiki/Mass_noun
/wiki/Information
/wiki/Knowledge
/wiki/Wisdom
/wiki/Shannon_entropy
/wiki/Knowledge
/wiki/Mount_Everest
/wiki/Altimeter
/wiki/Sign
/wiki/Marketing
/wiki/Social_services
/wiki/Truth
/wiki/Analog_computer
/wiki/Computer
/wiki/Alphabet
/wiki/Computer_program
/wiki/Lisp_(programming_language)
/wiki/Metadata
/wiki/Johanna_Drucker
希望对您有所帮助,否则,请让我知道发生了什么问题。