Python 如何从维基百科文章的子链接中获取数据?
是否可以从维基百科文章中的子链接中提取数据Python 如何从维基百科文章的子链接中获取数据?,python,beautifulsoup,Python,Beautifulsoup,是否可以从维基百科文章中的子链接中提取数据 import bs4 as bs import urllib.request import re sauce = urllib.request.urlopen('https://en.wikipedia.org/wiki/Greenhouse_gas').read() soup=bs.BeautifulSoup(sauce,'lxml') links = soup.find("div",{"id" : "bodyContent"}).findAll("
import bs4 as bs
import urllib.request
import re
sauce = urllib.request.urlopen('https://en.wikipedia.org/wiki/Greenhouse_gas').read()
soup=bs.BeautifulSoup(sauce,'lxml')
links = soup.find("div",{"id" : "bodyContent"}).findAll("a" , href=re.compile("(/wiki/)+([A-Za-z0-9_:()])+"))
for link in links:
print(link['href'])
webpage=urllib.request.urlopen(link['href'])
soup=bs.BeautifulSoup(webpage,'lxml')
您的
链接
列表包含您要删除的URL的结尾。运行代码时,我收到一个值错误:未知url类型:'/wiki/Wikipedia:Pending_changes'
。所以要解决我认为我
s your issue, try this:
beg_link = 'http://www.wikipedia.com'
for link in links:
full_link = beg_link + link['href']
print(full_link)
webpage=urllib.request.urlopen(full_link)
soup=bs.BeautifulSoup(webpage,'lxml')
打印并产生以下结果:
http://www.wikipedia.com/wiki/Wikipedia:Pending_changes
http://www.wikipedia.com/wiki/GHG_(disambiguation)
http://www.wikipedia.com/wiki/File:Greenhouse_Effect.svg
...
是的,可以跟踪链接并检索更多链接。为此,您可以使用递归函数(一个调用自身的函数)。您还应设置检索链接的数量限制,否则您的程序将不会停止,并且您应检查您尚未访问链接:
import bs4 as bs
import urllib2
import re
def get_links(links, url, limit=100):
sauce = urllib2.urlopen('https://en.wikipedia.org/wiki' + url).read()
soup = bs.BeautifulSoup(sauce,'lxml')
pos = len(links)
for link in soup.find("div",{"id" : "bodyContent"}).findAll("a" , href=re.compile("(/wiki/)+([A-Za-z0-9_:()])+")):
if len(links) < limit and link['href'] not in links:
links.append(link['href'])
if len(links) < limit:
for url in links[pos:]:
get_links(links, url, limit)
def main():
links = []
get_links(links, '/Greenhouse_gas')
print links
if __name__ == '__main__':
main()
将bs4作为bs导入
导入urllib2
进口稀土
def get_链接(链接、url、限制=100):
sauce=urllib2.urlopen('https://en.wikipedia.org/wiki“+url).读取()
汤=bs.BeautifulSoup(酱汁,'lxml')
pos=len(链接)
对于soup.find(“div”,“id”:“bodyContent”}).findAll(“a”,href=re.compile((/wiki/)+)([a-Za-z0-9:())+”)中的链接:
如果len(links)
这里有什么问题?是的,它“可以从维基百科文章中的子链接中获取数据”;运行上述代码时出现了什么问题/您得到了什么回溯?但当我尝试使用上述代码访问这些页面时,会显示错误