You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Scrapy爬取MedlinePlus时A-Z页面导航的实现问题

解决MedlinePlus A-Z页面的Scrapy导航问题

因为MedlinePlus的A-Z页面遵循固定命名规则,你可以通过两种方式实现全字母页面的爬取导航:

方法一:直接生成所有A-Z页面URL加入Start_urls

利用Python的字符生成逻辑,一次性生成从A到Z的所有页面链接,直接写入爬虫的start_urls列表:

import scrapy

class MedlineSpider(scrapy.Spider):
    name = 'medline_spider'
    # 生成A-Z对应的所有页面URL
    start_urls = [f'https://medlineplus.gov/ency/encyclopedia_{chr(ord("A") + i)}.htm' for i in range(26)]
    
    def parse(self, response):
        # 执行你已实现的子链接提取逻辑
        for sublink in response.css('your-sublink-selector'):
            yield scrapy.Request(sublink, callback=self.parse_sublink)
    
    def parse_sublink(self, response):
        # 提取子页面的标题与描述
        yield {
            'title': response.css('your-title-selector::text').get(),
            'description': response.css('your-description-selector::text').get()
        }

方法二:动态生成并请求A-Z页面(适合扩展场景)

如果后续需要调整字母范围或添加其他逻辑,可以在start_requests方法里动态生成URL并发起请求:

import scrapy

class MedlineSpider(scrapy.Spider):
    name = 'medline_spider'
    
    def start_requests(self):
        # 遍历A到Z的字母,生成对应URL
        for i in range(26):
            letter = chr(ord("A") + i)
            target_url = f'https://medlineplus.gov/ency/encyclopedia_{letter}.htm'
            yield scrapy.Request(target_url, callback=self.parse)
    
    def parse(self, response):
        # 子链接提取逻辑
        for sublink in response.css('your-sublink-selector'):
            yield scrapy.Request(sublink, callback=self.parse_sublink)
    
    def parse_sublink(self, response):
        # 标题与描述提取逻辑
        yield {
            'title': response.css('your-title-selector::text').get(),
            'description': response.css('your-description-selector::text').get()
        }

关键注意事项

  • 替换代码中的your-sublink-selector、your-title-selector、your-description-selector为你实际使用的CSS选择器。
  • 遵守网站爬取规则,可在settings.py中设置DOWNLOAD_DELAY参数控制请求间隔,避免被封禁。

内容的提问来源于stack exchange,提问作者Sairam S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:57:41