nmpa_spider.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. """
  2. NMPA 药品数据爬虫
  3. 目标:国家药品监督管理局药品数据库
  4. URL: https://www.nmpa.gov.cn/datasearch/
  5. 采集内容:
  6. - 批准文号
  7. - 药品通用名 / 商品名
  8. - 生产企业
  9. - 药品规格
  10. - 说明书
  11. """
  12. import logging
  13. from typing import Optional
  14. from crawlers.spider import BasePharmSpider
  15. logger = logging.getLogger(__name__)
  16. class NMPASpider(BasePharmSpider):
  17. name = "nmpa"
  18. allowed_domains = ["nmpa.gov.cn", "cdn.nmpa.gov.cn"]
  19. start_urls = [
  20. "https://www.nmpa.gov.cn/datasearch/search-result.html",
  21. ]
  22. def parse(self, response):
  23. """
  24. Phase 2 实现具体解析逻辑。
  25. NMPA 页面大量使用 JS 渲染,需要 Selenium 或 Playwright 配合。
  26. """
  27. logger.info(f"Fetching NMPA data from {response.url}")
  28. yield {"status": "placeholder", "message": "Phase 2 实现"}
  29. class NMPADetailSpider(BasePharmSpider):
  30. name = "nmpa_detail"
  31. def __init__(self, approval_number: Optional[str] = None, *args, **kwargs):
  32. super().__init__(*args, **kwargs)
  33. self.approval_number = approval_number
  34. def start_requests(self):
  35. if self.approval_number:
  36. url = f"https://www.nmpa.gov.cn/datasearch/search-info.html?approvalNumber={self.approval_number}"
  37. yield self.make_requests_from_url(url)