python开发基于正则表达式的爬虫

基于正则表达式的爬虫

一、爬虫简介

1.搜索引擎:百度,谷歌,企业内部的知识库,某些项目专项数据爬取,专业的数据爬取

2.互联网:公网(不需要授权的情况就可以访问浏览的内容,搜索引擎的重点),深网(需要授权才能使用的内容),暗网(非正式渠道,无法使用常规手段访问)

3.爬取互联网的公开信息,但是正常情况下,也需要遵守一个规则:robots协议:https://www.baidu.com/robots.txt

二、基本原理

1.所有的网页,均是HTML,HTML是一个大的字符串,可以按照字符串处理的方式(最有效的就是正则表达式),对响应进行解析处理。HTML本身也是一门标记语言,与XML同宗同源,所以可以使用DOM对其文本进行处理。

2.所有的爬虫,核心基于超链接,进而实现了网站和网页的跳转。给我一个网站,爬遍全世界。

3.如果要实现一个整站爬取程序,首先要收集到站内所有网址,并且将重复网址进行去重,开始爬取内容并保存在本地或数据库中,进而实现后续目的。

三、正则表达式实现爬虫

D:\Programmingtools\Python\Program\network\regularexpressionspider.py

import re,requests,time

def spide_page():
    try:
        resp = requests.get('http://woniunote.com/')
        resp.encoding='utf-8'
        # print(resp.text)
        page_pattern = '<a href="(.+?)"'
        page_links = re.findall(page_pattern,resp.text)
        for link in page_links:
            if 'css' in link or 'articleid' in link:
                continue
            if link.startswith('#'):
                continue
            if link.startswith('/'):
                link = 'http://woniunote.com' + link
            print(link)
            filename = link.split('/')[-1] + time.strftime('%Y%m%d_%H%M%S') + '.html'
            with open(f'./woniunote/pages/{filename}',mode='w',encoding='utf-8') as file:
                file.write(resp.text)
    except:
        raise Exception('出错了')

def spide_img():
    try:
        resp = requests.get('http://woniunote.com/')
        resp.encoding='utf-8'
        img_pattern = ' <img src="(.+?)"'
        img_links = re.findall(img_pattern,resp.text)
        for link in img_links:
            if link.startswith('/'):
                link = 'http://woniunote.com' + link
            # print(link)
            filename = link.split('/')[-1]
            content = requests.get(link).content
            with open(f'./woniunote/images/{filename}',mode='wb') as file:
                file.write(content)
    except:
        raise Exception('出错啦')

if __name__ == '__main__':
    # pass
    spide_page()
    # spide_img()

四、核心点

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值