我想编写一个打开网页的函数,并返回该页面上所有链接及其文本的字典。我试图这样做,但它给了我一个错误。我该怎么办?
def process(url):
myopener = MyOpener()
#page = urllib.urlopen(url)
page = myopener.open(url)
text = page.read()
page.close()
示例输入
<a href='http://my.computer .com/some/file.html'>link text</a>
输出
{"http://my.computer.com/some/file.html":link text.."}
答案 0 :(得分:1)
欢迎使用Stack Overflow,
你没有展示MyOpener
做了什么,所以我使用了自己的。{1}}。
此代码在Python Wikipedia文章中使用Python 3和Beautiful Soup 4 HTML解析器(个人最爱)。
root_url = "https://en.wikipedia.org"
html_string = retrieve_webage(root_url + "/wiki/Python_%28programming_language%29")
soup = BeautifulSoup(html_string)
output = {}
# Can redefine soup here to parse only a certain part of the page
for link in soup.find_all('a'):
linkhref = link.get('href')
if not linkhref:
# Ingnore blank hyperlinks
pass
elif linkhref[0] == '/':
# Add root url to relitive links
linkhref = root_url + linkhref
output[linkhref] = link.text
此脚本将覆盖具有相同href
属性的任何链接,因为它在页面上读取它们。您可以了解更多有关美味汤here的信息。
如果您有疑问,请随时在下面发表评论