我正在做一个图形项目,我想找到一种有效的方法,从一篇特定的英文维基百科文章中获取到其他英文维基百科文章的所有链接
目前,我正在使用bs4和Python,但我对bs4了解不多
以下是我现在拥有的:
##### Imports #####
from bs4 import BeautifulSoup
from bs4.dammit import EncodingDetector
import requests
##### Functions #####
parser = 'html.parser'
resp = requests.get("https://en.wikipedia.org/wiki/Influenza")
http_encoding = resp.encoding if 'charset' in resp.headers.get('content-type','').lower() else None
html_encoding = EncodingDetector.find_declared_encoding(resp.content, is_html=True)
encoding = html_encoding or http_encoding
soup = BeautifulSoup(resp.content, parser, from_encoding=encoding)
for link in soup.find_all('a', href=True):
print(link['href'])
问题是我得到了很多不需要的链接(非英语链接或非文章链接)。我认为我对HTML的了解不够,无法解决这个问题,我不想简单地过滤上面find_all()调用中提供给我的每个链接,因为这样做效率很低
如有任何建议,将不胜感激。 提前谢谢
您是否尝试使用WikipediaAPI获取所有链接?。这是获得此类结果的最佳、最准确的方法
在您的情况下,可以使用此API获取
Influenza
页面内的所有链接https://en.wikipedia.org/w/api.php?action=query&format=json&prop=linkshere&titles=Influenza&lhlimit=500
只需更改任何维基百科文章的上一个链接中的
Influenza
,它就可以正常工作相关问题 更多 >
编程相关推荐