原文: https://pythonspot.com/extract-links-from-webpage-beautifulsoup/

Web 抓取是从网站提取数据的技术。

模块BeautifulSoup设计用于网页抓取。BeautifulSoup模块可以处理 HTML 和 XML。 它提供了用于搜索,导航和修改分析树的简单方法。

从网站获取链接

下面的示例在网页上打印所有链接:

  1. from BeautifulSoup import BeautifulSoup
  2. import urllib2
  3. import re
  4. html_page = urllib2.urlopen("https://arstechnica.com")
  5. soup = BeautifulSoup(html_page)
  6. for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
  7. print link.get('href')

它下载带有行的原始 html 代码:

  1. html_page = urllib2.urlopen("https://arstechnica.com")

创建了BeautifulSoup对象,我们使用该对象查找所有链接:

  1. soup = BeautifulSoup(html_page)
  2. for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
  3. print link.get('href')

将网站链接提取到数组中

要将链接存储在数组中,可以使用:

  1. from BeautifulSoup import BeautifulSoup
  2. import urllib2
  3. import re
  4. html_page = urllib2.urlopen("https://arstechnica.com")
  5. soup = BeautifulSoup(html_page)
  6. links = []
  7. for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
  8. links.append(link.get('href'))
  9. print(links)

从网页提取链接的函数

如果您反复提取链接,则可以使用以下函数:

  1. from BeautifulSoup import BeautifulSoup
  2. import urllib2
  3. import re
  4. def getLinks(url):
  5. html_page = urllib2.urlopen(url)
  6. soup = BeautifulSoup(html_page)
  7. links = []
  8. for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
  9. links.append(link.get('href'))
  10. return links
  11. print( getLinks("https://arstechnica.com") )