【问题标题】:How do I scrape all the bold section titles using scrapy in this webpage?如何在此网页中使用 scrapy 刮掉所有粗体部分标题?
【发布时间】:2020-12-17 18:35:27
【问题描述】:

所以我想刮掉这个网页中所有的粗体部分标题,例如。简称,解释,行政管理……但到目前为止,我只能对第一部分的前 2 个这样做。

import scrapy

class ActScraper1Spider(scrapy.Spider):
    name = 'act_scraper_1'
    allowed_domains = ['sso.agc.gov.sg']
    start_urls = ['https://sso.agc.gov.sg/Act/AA2004']

def parse(self, response):

    info = response.xpath("//div[@class='body']/table//td[@class='part']/div[@class='prov1']")

    for titles in info:

        yield {
            'Section title': titles.xpath(".//td[@class='prov1Hdr']/span[2]/text()").get()
        }

从 8 //table[@width='100%'] 可以看出,这个网页一共包含了 8 个部分

标题位于此处 //div[@class='body']/table//td[@class='part']/div[@class='prov1']/td[@class='prov1Hdr ']/跨度/文本()

【问题讨论】:

    标签: python-3.x scrapy


    【解决方案1】:

    试试这个,只需从浏览器中复制 xpath,然后在 yield 部分粘贴你想要的标题。

    import scrapy
    
    class ActScraper1Spider(scrapy.Spider):
        name = 'act_scraper_1'
        allowed_domains = ['sso.agc.gov.sg']
        start_urls = ['https://sso.agc.gov.sg/Act/AA2004']
    
        def parse(self, response):
            info = response.xpath("//*[@id='tocNav']")
            titles = info.xpath("//li/a/span/text()").getall()
            # all title
            # for title in titles:
            #     print(title.strip())
            for i in info:
    
                    yield {
                        'short title': i.xpath('//*[@id="toc"]/li[4]/ul/li[1]/a/span/text()').get().strip(),
                        'Interpretation title2': i.xpath('//*[@id="toc"]/li[4]/ul/li[2]/a/span/text()').get().strip(),
                        'Administration of Act title2': i.xpath('//*[@id="toc"]/li[5]/ul/li[1]/a/span/text()').get().strip(),
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 2022-07-22
      • 2014-09-12
      • 2015-04-02
      • 2018-05-22
      • 1970-01-01
      相关资源
      最近更新 更多