Visual Studio 2012中安装Python环境,使得我们能够在Visual Studio中就可以编写Python程序。接下来写了一个网页抓取的简单示例作为入门爬虫的开始,整个代码的目的功能是把需要的网页保存下来。

例如:我们想要把hao123上网导航页面中所有链接的网页都保存下来。

想要保存某个网页,首先我们需要知道这个页面的网址,然后发送网络请求尝试获取这个网页内容,最后将获取到的网页内容写入到文件保存在本地,即可完成整个抓取的功能。整个过程只需要两步,一个是获取网址,一个是保存文件。下面我们分开来写

获取网址的方法:

def getLinkFromHtml(url,regular):
           r = requests.get(url)           #使用requests发送网络请求,在代码开始位置导入import requests,request模块的安装请参考安装教程。
           data = r.text        
           link_list =re.findall(regular ,data)        
           for url in link_list:
               print(url)

        以上为获取网址的方法,包含两个参数,url为起始网址,这里我们以hao123的主页网址‘https://www.hao123.com/’为例,regular参数为想要保存的子网页的正则表达式,这里我们是要把主页中所有链接的网页都保存下来,因此需要使用regular参数在整个网页内容中匹配出所有的链接,匹配链接的正则为‘(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')’,传入参数测试该方法即可在屏幕上打印出所有链接的网址。

获取到了网址后接下来我们需要定义另一个方法用来把网页保存下来:

def grabHtmlToMach(url,savePath):
         urlText = urlopen(url)          #除了使用requests.get方法之外,还可以用urlopen来打开一个网页获取所有内容。
         content = urlText.read()        #将网页内容读取到content放在内存
         fp = open(savePath, 'w',encoding = 'utf-8')
         fp.write(content.decode('utf-8'))
         fp.close()

   以上为保存网页内容,url为要保存的子网页网址,savePath为保存位置。将所有网页内容都保存下来只需在获取网址的方法中的循环调用保存方法便可完成。

   最后说明一下,这里我们是把获取网址和保存文件分别在单独的方法中实现的,实际应用过程中无需这样多此一举,一个函数就可以解决问题,第一个获取网址的方法只是方便需要匹配的情况