【Python高级编程】基于正则表达式的爬虫
【Python高级编程】基于正则表达式的爬虫
配套视频课程:
【AI人工智能实战】 Python高级编程(附完整版源码资料)
一、爬虫简介
1、搜索引擎:百度,谷歌,企业内部的知识库,某些项目专项数据爬取,专业的数据爬取
2、互联网:公网(不需要授权的情况就可以浏览的内容,搜索引擎的重点),深网(需要授权才能使用的内容),暗网(非正式渠道,无法使用常规手段访问)
3、爬取互联网的公开信息,但是正常情况下,也需要遵守一个规则:robots协议:https://www.baidu.com/robots.txt (君子协议)
二、基本原理
1、所有和网页,均是HTML,HTML首先是一个大的字符串,可以按照字符串处理的方式对响应进行解析处理。其次,HTML本身也是一门标记语言,与XML是同宗同源,所以可以使用DOM对其文本进行处理。
2、所有的爬虫,核心基于超链接,进而实现网站和网页的跳转。给我一个网站,爬遍全世界。
3、如果要实现一个整站爬取程序,首先需要收集到站内所有网址,并且将重复网址去除,开始爬取内容并保存在本地或数据库,进行实现后续目标。
三、正则表达式实现
1、查找页面所有超链接
import re, requests
links = re.findall('<a href="(.+?)">', resp.text)
for link in links:print(link)
2、优化超链接并下载页面
import re, requests, time
links = re.findall('<a href="(.+?)"', resp.text)
for link in links:# 先根据页面特性,将一些无用的超链接进行排除if 'articleid' in link:continueif link.startswith('#'):continue# 对超链接进行处理,拼接出完整的URL地址if link.startswith('/'):link = 'http://www.woniunote.com' + link# 将页面文件保存于本地resp = requests.get(link)resp.encoding = 'utf-8'filename = link.split('/')[-1] + time.strftime("_%Y%m%d_%H%M%S") + '.html'with open(f'./woniunote/page/{filename}', mode='w', encoding='utf-8') as file:file.write(resp.text)
3、下载首页图片
import re, requests, time
resp = requests.get('http://www.woniunote.com/')
images = re.findall('<img src="(.+?)"', resp.text)
for image in images:# 处理URL地址if image.startswith('/'):image = 'http://www.woniunote.com' + image# 下载图片resp = requests.get(image)# suffix = image.split('.')[-1]filename = time.strftime("%Y%m%d_%H%M%S_") + image.split('/')[-1]with open('./woniunote/image/' + filename, mode='wb') as file:file.write(resp.content)
周末任务:
1、爬虫开发任务:爬取woniunote第10页到第20页的所有文章的标题,随机挑几篇文章,爬取文章中的图片
2、实现WoniuSales的批次功能(文件上传)
3、预习:HTML的DOM元素定位(含XPath)
4、查漏补缺:PHP、环境配置、网络协议(http://www.woniuxy.com/course/284,重点:TCP/IP/ARP/ICMP/HTTP)