【问题标题】:Scraping an onclick value in BeautifulSoup in Pandas在 Pandas 中的 BeautifulSoup 中抓取 onclick 值
【发布时间】:2023-04-05 07:41:01
【问题描述】:

为了上课,我们被要求抓取朝鲜通讯社的网站:http://kcna.kp/kcna.user.home.retrieveHomeInfoList.kcmsf

问题要求抓取网站的 onclick 值。我尝试通过两种不同的方式解决这个问题:通过导航 DOM 树。并通过在 lop 中构建一个正则表达式来系统地将它们拉出来。我在这两个方面都失败了。

尝试1:

onclick_soup = soup_doc.find_all('a', class_='titlebet')[0]
onclick_soup

输出:

<a class="titlebet" href="#this" onclick='fn_showArticle("AR0140322",
"", "NT00", "L")'>경애하는 최고령도자 <nobr><strong><font
style="font-size:10pt;">김정은</font></strong></nobr>동지께서 라오스인민혁명당 중앙위원회
총비서인 라오스인민민주주의공화국 주석에게 축전을 보내시였다</a>

尝试2:

regex_for_onclick_soup = r"onclick='(.*?)\(" onclick_value_soup =
soup_doc.find_all('a', class_='titlebet') for onclick_value in
onclick_value_soup: value =
re.findall(regex_for_onclick_value,onclick_value) print(onclick_value)

Attempt2 产生 TypeError

我在熊猫中这样做。任何指导都会有所帮助。

【问题讨论】:

    标签: python pandas beautifulsoup


    【解决方案1】:

    您可以简单地遍历 html 中的每个元素标记并检查 onclick 事件。

    page= requests.get('http://kcna.kp/kcna.user.home.retrieveHomeInfoList.kcmsf')
    soup = BeautifulSoup(page.content, 'lxml')
    
    for tag in soup.find_all():
        on_click = tag.get('onclick')
        if on_click:
            print(on_click)
    

    请注意,当使用find_all() 时不带任何参数,它将检索每个标签。然后我们使用这个标签搜索不是Noneonclick并打印出来。

    输出:

    fn_convertLanguage('kor')
    fn_convertLanguage('eng')
    fn_convertLanguage('chn')
    fn_convertLanguage('rus')
    fn_convertLanguage('spn')
    fn_convertLanguage('jpn')
    GotoLogin()
    register()
    evalSearch()
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 2021-04-26
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 2015-01-05
      相关资源
      最近更新 更多