0

これで何度も失敗したので頭がおかしいと思いましたが、理解できないhtmlで何かが起こっているのではないかと思いました。

私は cnn.com から「記事」をこすり取ろうとしています。

しかし、どの方法でsoup.find_all('articles')、またはsoup.find('body').div('div')...などを試しても、クラスタグ、idなどで失敗しました。

私はこの参照を見つけました: Webscraping from React Web application after componentDidMount

問題が発生している理由は、html へのインジェクションだと思われます。

サイバーセキュリティの読書から「html インジェクション攻撃」以外のインジェクションについては 0 を知っています。

記事が欲しいのですが、上記の他のスタック オーバーフローの質問リンクと同様の戦術を使用する必要があると思います。私は方法がわからない。ヘルプ ドキュメントへのリンク、または具体的には cnn スクレイピングへのリンクをいただければ幸いです。

または、html body 要素の「完全なデータ」を取得する方法を誰かが知っている場合は、この定義の初期のコードで再配置を行い、body を再割り当てすることができます。

「それとも、私はばかで間違った方向に進んでいると言ってください」

def build_art_d(site):
            
    url = site
    main_l = len(url)
    
    html = requests.get(url).text
    soup = BeautifulSoup(html, 'lxml')
    

    print(soup.prettify())
    
    art_dict = {}
    
    body = soup.find('body')
    print(body.prettify())
    div1 = body.find('div', {'class':'pg-no-rail pg-wrapper'})
    section = div1.find('section',{'id' : 'homepage1-zone-1'})
    div2 = section.find('div', {'class':'l-container'})
    div3 = div2.find('div', {'class':'zn__containers'})
    articles = div3.find_all('article')
    
    for art in articles:
        art_dict[art.text] = art.href
    
        
    #test print
    for article in art_dict:
        print('Article :: {}'.format(article), 'Link :: {}'.format(art_dict[article]))
4

1 に答える 1