Saya memiliki kode HTML ini: http://imgur.com/a/dPNYI
Saya mencoba mengekstrak dan mencetak garis yang disorot pada gambar ("some text").
"some text" adalah teks div pertama dengan class=chat-message bersarang di div dengan id=chat-messages (Dengan kata lain saya mencoba mengekstrak teks dari div anak pertama dari div id=chat-messages, sementara semua anaknya serupa dalam struktur).

Apa yang saya coba:

import requests
from bs4 import BeautifulSoup

url = "the url this is used for"
r = requests.get(url)

soup = BeautifulSoup(r.content, 'lxml')
g_data = soup.find('div',{'class':'chat-message-content selectable'})
print(g_data.text)

Yang memberi saya kesalahan:

AttributeError: 'NoneType' object has no attribute 'text'

Seolah-olah g_data adalah NULL.
Apa yang saya lakukan salah? Terima kasih!


KODE HTML:

<html>
<head>
    <title>
    </title>
</head>

<body>
    <div id="main">
        <div data-reactroot="" id="app">
            <div class="top-bar-authenticated" id="top-bar">
            </div>


            <div class="closed" id="navigation-bar">
            </div>


            <div id="right-sidebar">
                <div id="chat">
                    <div id="chat-head">
                    </div>


                    <div id="chat-title">
                    </div>


                    <div id="chat-messages">
                        <div class="chat-message">
                            <div class="chat-message-avatar" style="background-image: url(&quot;https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/65/657dcec97cc00bc378629930ecae1776c0d981e0.jpg&quot;);">
                            </div>
                            <a class="chat-message-username clickable">
                            <div class="iron-color">
                                aloe
                            </div></a>

                            <div class="chat-message-content selectable">
                                <!-- react-text: 2532 -->some text<!-- /react-text -->
                            </div>
                        </div>


                        <div class="chat-message">
                            <div class="chat-message-avatar" style="background-image: url(&quot;https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/65/657dcec97cc00bc378629930ecae1776c0d981e0.jpg&quot;);">
                            </div>
                            <a class="chat-message-username clickable">
                            <div class="iron-color">
                                aloe
                            </div></a>

                            <div class="chat-message-content selectable">
                                <!-- react-text: 2533 -->some other text<!-- /react-text -->
                            </div>
                        </div>


                        <div class="chat-message">
                        </div>


                        <div class="chat-message">
                        </div>


                        <div class="chat-message">
                        </div>


                        <div class="chat-message">
                        </div>
0
Dina Benyamin 10 Agustus 2017, 14:47

2 jawaban

Jawaban Terbaik

Membaca komentar Anda pada pertanyaan, saya melihat Anda mencoba mengurai situs web yang memuat konten menggunakan JavaScript, itu sebabnya requests tidak berfungsi untuk Anda. Anda harus menggunakan selenium dengan webdriver(mis., Chromedriver,PhantomJS). Sesuatu seperti kode di bawah ini:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.csgoarena.com/home")

soup = BeautifulSoup(driver.page_source, 'lxml')
g_data = soup.findAll('div',{'class':'chat-message-content selectable'})
print(g_data)

Karena Anda menginginkan .text dari semua elemen yang dipilih:

>>> for match in g_data:
    print(match.text)


not everytime :D
I understand :)
 NuuZy csgoarena.com but he won GA's only when it were long 
Yea I always saw him
Everyday
caught
(...)
1
Vinícius Figueiredo 10 Agustus 2017, 14:09

Jika Anda ingin mencari tag yang cocok dengan dua atau lebih kelas CSS, Anda harus menggunakan pemilih CSS:

g_data = soup.select('div.chat-message-content.selectable')
0
Rahul 10 Agustus 2017, 12:14