如何从网页上抓取JavaScript生成的内容?

2024-04-25 06:22:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把“财务报表附注”下的所有内容都删掉。我该怎么做?这是网页的链接:Please Click

这是截图:Screenshot

“财务报表附注”下的每一项都是在我点击链接后生成的。我想获取每个项目的源代码并对其进行解析,例如,“重要会计政策摘要”。你知道吗

谢谢你!你知道吗

更新日期:2019-10-22

现在我的问题归结为如何从下面的代码中提取id(即r9、r10等)。它在一个class=“accordion”的

  • 中。有a href=“#” id="menu_cat2" in the
  • 不是最好的代码。我就是这样做到的:

       lis = soup.select("li.accordion")
       notes = [str(li) for li in lis if "menu_cat3" in str(li)]
       ids = re.findall(r'id="(r\d+)"', notes[0])
    

    source

    你知道吗

  • Tags: 代码inid网页内容链接limenu
    2条回答

    该页面根据该部分中lis的ID发出请求。收集ID,转换成大写,并发出相同的请求。需要bs4.7.1+

    from bs4 import BeautifulSoup as bs
    import requests
    
    with requests.Session() as s:
        s.headers = {'User-Agent':'Mozilla/5.0'}
        r = s.get('https://www.sec.gov/cgi-bin/viewer?action=view&cik=320193&accession_number=0000320193-18-000145&xbrl_type=v#')
        soup = bs(r.content, 'lxml')
        urls = [f'https://www.sec.gov/Archives/edgar/data/320193/000032019318000145/{i["id"].upper()}.htm' for i in soup.select('li:has(#menu_cat3) .accordion')]
    
        for url in urls:
            r = s.get(url)
            soup = bs(r.content, 'lxml')
            print([i.text for i in soup.select('font')])
    

    你可以用硒或刮痧 https://selenium-python.readthedocs.io/index.html

    方法:

    https://selenium-python.readthedocs.io/navigating.html

    导航到该链接 单击html元素-可以通过使用xpath或css选择器来完成 获取文本内容

    相关问题 更多 >