我的简单爬虫

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我的int值在SharedReferences中不被记住   java如何编辑Spring可分页对象?   java如何在gradle中单独调用任务   jvm以编程方式设置最大java堆大小   java如果满足多个条件,如何使用If语句计算数字?   如何在java中从json文件中获取特定值   如何在Sphinx4中为Java语音识别添加自定义语法?   java int[]copy=data;//当数据是数组时会发生什么?   java豪猪管理器。停下来。destroy()不起作用   安卓在API级别28中找不到画布变量   基于SOLID的java冗余   用于talend作业的java Liferay和portlet   从java到安卓的视频流   java获取在控件的类定义中添加自定义控件的场景大小   awt Java IndexOutOfBoundsException   java如何使用Spring JmsTemplate更改MQ头   java遍历数组并打印每个对象   java Google Map api v2标记在我旋转手机和地图“刷新”之前不会移动