基本的网络爬虫,自动化网站探索和产生网络资源树。

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资源树。

工作流程如下

  1. 创建子类
  • 设置以下属性
    • MAIN_SOURCE_DOMAIN例如'https://learningequality.org'
    • START_PAGE例如'https://learningequality.org/'
  1. 通过调用crawler.crawl()或作为命令首次运行 行脚本
  • basiccrawler具有访问页面的基本逻辑,并将打印 总结自推断的部位狭窄的发现和 基于在 初始爬网。
  • 基于链接出现在 爬虫程序将向您推荐全局导航的候选站点 链接。大多数网站都有/关于页面,/联系我们,以及其他类似的 不包含内容的页面,我们不希望在 Web资源树。你应该检查这些建议并决定 应该忽略的(即不爬网或包含在 网络资源树输出)。若要忽略URL,可以编辑 属性:
    • IGNORE_URLS(字符串列表):爬网程序将忽略此url
    • IGNORE_URL_PATTERNS(re对象列表):正则表达式 做同样的事情编辑爬虫子类的代码并附加 以IGNORE_URLSIGNORE_URL_PATTERNS您想要的URL 跳过(任何不可能包含内容的东西)
  1. 再次运行爬虫程序,这次应该会有更少的噪音 输出。
  • 注意您可能要处理的不同路径的建议 特别地(例如/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
    

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
jframe为什么JAVA paint()方法不起作用?   java Guice:将ContainerRequestContext注入拦截器   java如何优雅地关闭Spring JMS MessageListenerAdapter   java如何在Spring中设置快照隔离级别   Java中的安卓平台独立信任存储路径   java无法在eclipse中运行hello world程序   java Sinch空指针问题   使用Java将JSON流式传输到BigQuery   java从“大数据”中选择什么Swing控件?   java通过对象字段过滤/排序集合?   java将数据从活动传递到另一个活动中的片段   java访问打包在jar文件中的文档   Java获取事件的大小。getDragboard()。getFiles()。流()。映射(文件::长度)。toString());   java Android libgdx:启动程序图标按下后,启动屏幕不会立即显示   java如何在Google App Engine灵活环境中配置oracle jdk   java有没有办法减少这些行?   Java:客户端socket不读取第二行,在终止符行之后保持打开状态   java以编程方式获取api 29上的所有APK文件   java ActionBar按钮不显示