基本的网络爬虫,自动化网站探索和产生网络资源树。
basiccrawler的Python项目详细描述
基本的网络爬虫程序,自动进行网站探索和生产网络 资源树。
待办事项
0.2版TOdo
- 完成“是文件”逻辑,以便在下载到之前检查内容类型
避免大量下载
- 从URL中的扩展名推断文件??
- 制作一个“忽略”URL列表,该列表包含以下内容:
- 完整的URL(字符串)
- 编译的重新对象
- 决定忽略什么的函数,而不是(任何可调用的)
- url的路径/反之亦然(可能在其他地方):考虑 urllib.urlparse?[例如,url.startwith(source_domain)可以是 {TT3}$以使其更具灵活性 子域
- 可以指定其他有效域,但是url_to_path_list 假设添加频道根域[我们可能希望扩展所有链接 基于父url]
- 重构并删除对主源域的需要,仅使用 而是源代码域
特色创意
- 异步下载(不需要,但可能适合 大型网站的性能)
- 不为http阻止
- 允许多个工作进程从队列中获取
- 默认on_page处理程序的内容选择器提示
链接只在HTML树的特定子集内。可以有:
- 全站仪类选择器
- 通过引用页传入附加的content_selector。 上下文dict
- 自动检测标准嵌入标记(音频、视频、PDF)并添加 默认on_page处理程序中指向Web资源树的链接。
用法
BasicCrawler类的目标是帮助 探源网站。你有责任写一篇 使用HTML、URL结构和内容来指导 爬网并生成web资源树。
工作流程如下
- 创建子类
- 设置以下属性
- MAIN_SOURCE_DOMAIN例如'https://learningequality.org'
- START_PAGE例如'https://learningequality.org/'
- 通过调用crawler.crawl()或作为命令首次运行 行脚本
- basiccrawler具有访问页面的基本逻辑,并将打印 总结自推断的部位狭窄的发现和 基于在 初始爬网。
- 基于链接出现在
爬虫程序将向您推荐全局导航的候选站点
链接。大多数网站都有/关于页面,/联系我们,以及其他类似的
不包含内容的页面,我们不希望在
Web资源树。你应该检查这些建议并决定
应该忽略的(即不爬网或包含在
网络资源树输出)。若要忽略URL,可以编辑
属性:
- IGNORE_URLS(字符串列表):爬网程序将忽略此url
- IGNORE_URL_PATTERNS(re对象列表):正则表达式 做同样的事情编辑爬虫子类的代码并附加 以IGNORE_URLS和IGNORE_URL_PATTERNS您想要的URL 跳过(任何不可能包含内容的东西)
- 再次运行爬虫程序,这次应该会有更少的噪音 输出。
注意您可能要处理的不同路径的建议 特别地(例如/course、/lesson、/content等),您可以 定义类方法来处理这些url类型:
def on_course(self, url, page, context): # what do you want the crawler to do when it visits the course with `url` # in the `context` (used for extra metadata; contains reference to parent) # The BeautifulSoup parsed contents of the `url` are provided as `page`. def on_lesson(self, url, page, context): # what do you want the crawler to do when it visits the lesson def on_content(self, url, page, context): # what do you want the crawler to do when it visits the content url