【问题标题】:Selenium append list of paragraphs to single variableSelenium 将段落列表附加到单个变量
【发布时间】:2020-06-26 23:32:36
【问题描述】:

大家晚上好,

我不熟悉网络抓取,所以我想我会为自己挑选一个简单的项目,但我遇到了一些问题。

我的 html 的一小部分如下所示:

<div id="comment-901408_wrap">
    <div class="cPost_contentWrap ipsPad">
        <div data-role="commentContent" class="ipsType_normal ipsType_richText ipsContained" data-controller="core.front.core.lightboxedImages">
            <p>
                Text1
            </p>
            <p>
                Text2
            </p>
            <p>
                Text3
            </p>
            <p>
                Text4
            </p>    
        </div>
    </div>
</div>

会有多个comment-[id]_wrap id,都带有1个或多个p元素。我想要实现的是制作一个有两列的表格;评论 ID 和文本。一个例子看起来像这样(只是数据框很好):

这可以实现吗?我可以附上一些我尝试过的代码,但我不相信它会真正导致任何地方

【问题讨论】:

    标签: python html selenium xpath web-scraping


    【解决方案1】:

    此脚本会以模式comment-XYZ 的形式查找每个&lt;div&gt;id,获取所有文本并将其添加到DataFrame:

    import re
    from bs4 import BeautifulSoup
    
    
    txt = '''<div id="comment-901408_wrap">
        <div class="cPost_contentWrap ipsPad">
            <div data-role="commentContent" class="ipsType_normal ipsType_richText ipsContained" data-controller="core.front.core.lightboxedImages">
                <p>
                    Text1
                </p>
                <p>
                    Text2
                </p>
                <p>
                    Text3
                </p>
                <p>
                    Text4
                </p>
            </div>
        </div>
    </div>'''
    
    soup = BeautifulSoup(txt, 'html.parser')
    
    r = re.compile(r'comment-(\d+)')
    all_data = []
    for div in soup.find_all(id=r):
        all_data.append([r.search(div['id'])[1], div.get_text(strip=True, separator=' ')])
    
    df = pd.DataFrame(all_data, columns=['Comment ID', 'tekst'])
    print(df)
    

    打印:

      Comment ID                    tekst
    0     901408  Text1 Text2 Text3 Text4
    

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2013-01-29
      • 2012-10-05
      • 1970-01-01
      • 2021-04-03
      • 2012-03-10
      相关资源
      最近更新 更多