接,基础篇,链接:python爬虫入门(所有演示代码,均有逐行分析!)-CSDN博客
目录
1.爬取博客网站全部文章列表
ps:补充(正则表达式)
PS:这里涉及到python基础语法中正则表达式的内容
课:第三阶段-09-正则表达式-基础方法_哔哩哔哩_bilibili
实例代码:
import re
url1 = "http://www.crazyant.net/1234.html"
url2 = "http://www.crazyant.net/1234.html#comments"
url3 = "http://www.baidu.com"
pattern = r'^http://www.crazyant.net/\d+.html$'
#r;使\d这类转义字符作为一个整体出现,而不是分开的\+d的意思;\d表示一个十进制的数字 [0-9],\d+代表十进制的数字有多个
print(re.match(pattern,url1)) #ok
print(re.match(pattern,url2)) #none
print(re.match(pattern,url3)) #none
运行结果图:
爬虫实现
创建Python Package,命名为blog_test
在package下创建url_manager.py文件,用于存放url管理器模块代码
url管理器代码:
class UrlManager():
'''
url管理器
'''
def __init__(self):
#定义一个初始化函数
self.new_urls = set()
#新的待爬取url的集合
self.old_urls = set()
#已爬取url的集合
def add_new_url(self, url):
#定义新增单个url的方法一,传一个参数url
if url is None or len(url) == 0:
#判断url是否为空或长度为0
return
#符合上述条件就停止增加
if url in self.new_urls or url in self.old_urls:
#判断url是否已经被记录在集合里
return
#已经载集合里的url不新增
self.new_urls.add(url)
#上述干扰条件排除后,url就可以加入待爬取的集合中
def add_new_urls(self,urls):
#定义新增url的方法二,传一个参数urls
if urls is None or len(urls) == 0:
#判断参数urls是否为空
return
for url in urls:
#不为空就将单个url循环传入单个判断url方法中经行判断存储
self.add_new_url(url)
def get_url(self):
#定义获取新url的函数
if self.has_n