我的简单爬虫

simple-crawler的Python项目详细描述


安装

pip3 install simple-crawler

将environmentAUTO_CHARSET=1设置为passbytes以美化oup4并让它检测字符集。

课程

  • URL:定义一个url
  • URLExt:要处理的类URL
  • Page:定义URL的请求结果
    • url:类型URL
    • contenttextjson:来自库的响应内容属性requests
    • type:响应体类型是一个枚举,它允许BYTESTEXTHTMLJSON
    • is_html:检查html是否符合响应头的Content-Type
    • soupBeautifulSoup如果is_html
  • Crawler:通过反复调用handler_page()来调度爬网程序

示例

from simple_crawler import *


class MyCrawler(Crawler):
    name = 'output.txt'
    aysnc def custom_handle_page(self, page):
        print(page.url)
        tags = page.soup.select("#container")
        tag = tags and tags[0]
        with open(self.name, 'a') as f:
            f.write(tag.text)
        # do some async call

    def filter_url(self, url: URL) -> bool:
        return url.url.startswith("https://xxx.com/xxx")


loop = get_event_loop(True)
c = MyCrawler("https://xxx.com/xxx", loop, concurrency=10)
schedule_future_in_loop(c.start(), loop=loop)

待办事项

  • [X]使用异步或线程加速

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

推荐PyPI第三方库


热门话题
java如何在jetty请求日志中添加milliscond字段?   java在使用Scanner类从文件读取信息时遇到问题   为什么。类不适用于泛型类型?   SQLite插入上的java空指针异常   java能告诉我们Guava缓存是在禁用统计数据的情况下构建的吗?   java在应用程序中使用常量   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java如何在jtable中更新jprogress栏   java是比较给定日期和当前日期(在给定时区中没有时间段)的最佳方法   安卓代码中的java错误   java无法访问实体类中的字段   java如何在tomcat中处理三个JDBC连接池?   java无法使用Spring Security保护AngularJS页面   如何在没有TCP/IP协议栈的情况下用Java发送以太帧