* fix: Update export of URLPatternFilter * chore: Add dependancy for cchardet in requirements * docs: Update example for deep crawl in release note for v0.5 * Docs: update the example for memory dispatcher * docs: updated example for crawl strategies * Refactor: Removed wrapping in if __name__==main block since this is a markdown file. * chore: removed cchardet from dependancy list, since unclecode is planning to remove it * docs: updated the example for proxy rotation to a working example * feat: Introduced ProxyConfig param * Add tutorial for deep crawl & update contributor list for bug fixes in feb alpha-1 * chore: update and test new dependancies * feat:Make PyPDF2 a conditional dependancy * updated tutorial and release note for v0.5 * docs: update docs for deep crawl, and fix a typo in docker-deployment markdown filename * refactor: 1. Deprecate markdown_v2 2. Make markdown backward compatible to behave as a string when needed. 3. Fix LlmConfig usage in cli 4. Deprecate markdown_v2 in cli 5. Update AsyncWebCrawler for changes in CrawlResult * fix: Bug in serialisation of markdown in acache_url * Refactor: Added deprecation errors for fit_html and fit_markdown directly on markdown. Now access them via markdown * fix: remove deprecated markdown_v2 from docker * Refactor: remove deprecated fit_markdown and fit_html from result * refactor: fix cache retrieval for markdown as a string * chore: update all docs, examples and tests with deprecation announcements for markdown_v2, fit_html, fit_markdown
56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
import asyncio
|
|
from crawl4ai import (
|
|
AsyncWebCrawler,
|
|
CrawlerRunConfig,
|
|
HTTPCrawlerConfig,
|
|
CacheMode,
|
|
DefaultMarkdownGenerator,
|
|
PruningContentFilter
|
|
)
|
|
from crawl4ai.async_crawler_strategy import AsyncHTTPCrawlerStrategy
|
|
from crawl4ai.async_logger import AsyncLogger
|
|
|
|
async def main():
|
|
# Initialize HTTP crawler strategy
|
|
http_strategy = AsyncHTTPCrawlerStrategy(
|
|
browser_config=HTTPCrawlerConfig(
|
|
method="GET",
|
|
verify_ssl=True,
|
|
follow_redirects=True
|
|
),
|
|
logger=AsyncLogger(verbose=True)
|
|
)
|
|
|
|
# Initialize web crawler with HTTP strategy
|
|
async with AsyncWebCrawler(crawler_strategy=http_strategy) as crawler:
|
|
crawler_config = CrawlerRunConfig(
|
|
cache_mode=CacheMode.BYPASS,
|
|
markdown_generator=DefaultMarkdownGenerator(
|
|
content_filter=PruningContentFilter(
|
|
threshold=0.48,
|
|
threshold_type="fixed",
|
|
min_word_threshold=0
|
|
)
|
|
)
|
|
)
|
|
|
|
# Test different URLs
|
|
urls = [
|
|
"https://example.com",
|
|
"https://httpbin.org/get",
|
|
"raw://<html><body>Test content</body></html>"
|
|
]
|
|
|
|
for url in urls:
|
|
print(f"\n=== Testing {url} ===")
|
|
try:
|
|
result = await crawler.arun(url=url, config=crawler_config)
|
|
print(f"Status: {result.status_code}")
|
|
print(f"Raw HTML length: {len(result.html)}")
|
|
if hasattr(result, 'markdown'):
|
|
print(f"Markdown length: {len(result.markdown.raw_markdown)}")
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main()) |