博客列表 > 结合LangChain实现网页数据爬取

结合LangChain实现网页数据爬取

霍格沃兹测开学社
霍格沃兹测开学社 原创
2025年01月10日 10:41:24 640浏览

LangChain 非常强大的一点就是封装了非常多强大的工具可以直接使用。降低了使用者的学习成本。比如数据网页爬取。

在其官方文档-网页爬取中,也有非常好的示例。

应用场景

  • 信息爬取。
  • RAG 信息检索。

实践应用

需求说明

  • 从 ceshiren 网站中获取每个帖子的名称以及其对应的url信息。
  • ceshiren论坛地址:ceshiren.com

实现思路

对应源码

  1. # 定义大模型
  2. from langchain_openai import ChatOpenAI
  3. llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613")
  4. # 定义提取方法
  5. def extract(content: str, schema: dict):
  6. from langchain.chains import create_extraction_chain
  7. return create_extraction_chain(schema=schema, llm=llm).invoke(content)
  8. import pprint
  9. from langchain_text_splitters import RecursiveCharacterTextSplitter
  10. def scrape_with_playwright(urls, schema):
  11. # 加载数据
  12. loader = AsyncChromiumLoader(urls)
  13. docs = loader.load()
  14. # 数据转换
  15. bs_transformer = BeautifulSoupTransformer()
  16. # 提取其中的span标签
  17. docs_transformed = bs_transformer.transform_documents(
  18. docs, tags_to_extract=["span"]
  19. )
  20. # 数据切分
  21. splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
  22. chunk_size=1000, chunk_overlap=0)
  23. splits = splitter.split_documents(docs_transformed)
  24. # 因为数据量太大,输入第一片数据使用,传入使用的架构
  25. extracted_content = extract(schema=schema, content=splits[0].page_content)
  26. pprint.pprint(extracted_content)
  27. return extracted_content
  28. urls = ["https://ceshiren.com/"]
  29. schema = {
  30. "properties": {
  31. "title": {"type": "string"},
  32. "url": {"type": "string"},
  33. },
  34. "required": ["title", "url"],
  35. }
  36. extracted_content = scrape_with_playwright(urls, schema=schema)

总结

  1. 了解网页爬取的实现思路以及相关技术。
  2. 通过LangChain实现爬取测试人网页的标题和url。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议