【问题标题】:How to extract such text from javascript sentences in a html file by python如何通过python从html文件中的javascript句子中提取此类文本
【发布时间】:2013-07-14 01:46:03
【问题描述】:

我是网络抓取编码的新手。我正在使用 python 来解析 html 文件,我使用的包是 BeautifulSoup。现在我想提取某些数字,如@9​​87654322@ 中的1$mwidgetHelper.setTitle('Notes (1)') 中的1,以及此html 文件中hover_boxes.hoverize_link('user_638166_451203', 'user_profile')hover_boxes.hoverize_link('user_638166_451203', 'user_profile') 中的user_638166_451203 等文本。问题是我不确定应该使用哪些方法来解析这些元素。代码如下:

<script>

      newDiv = document.createElement("div");
      newDiv.id = $mwidgetManager.getTitleId();
      newDiv.className = 'mw_title widget_title ' + $mwidgetManager.getTitleId();
      newDiv.innerHTML = "About Me";
      $p('ppwt_1').appendChild(newDiv);

      $mwidgetHelper.setTitle('About kk');
      $mwidgetManager.nextApp();

      newDiv = document.createElement("div");
      newDiv.id = $mwidgetManager.getTitleId();
      newDiv.className = 'mw_title widget_title ' + $mwidgetManager.getTitleId();
      newDiv.innerHTML = "Status";
      $p('ppwt_11').appendChild(newDiv);

      $mwidgetHelper.setTitle('Posts (1)');
      $mwidgetHelper.setSubtitle('<a href=\"/user_posts/list/9\">See All<\/a>');
      $mwidgetManager.nextApp();


      $mwidgetHelper.setTitle('Notes (1)');
      $mwidgetHelper.setSubtitle('<a href=\"/notes/list/9\">See All<\/a>');

     //<![CDATA[
          hover_boxes.hoverize_link('user_638166_451203', 'user_profile');
     //]]>

</script>

谢谢!

【问题讨论】:

  • 您的实际问题不是很清楚。请重新措辞。
  • @CSJ 谢谢提醒!我已经编辑了我的问题。希望能更清楚~
  • 这样好多了。提出问题的一个好的模式是:(1)设置问题,(2)提出问题,(3)提供额外的细节。祝你好运!

标签: javascript python html package web-scraping


【解决方案1】:

Beautiful Soup 最好用于解析 HTML 树,而不是 JavaScript 源代码。看源码,感觉JavaScript确实改变了DOM,所以你可以用Beautiful Soup通过检查需要的元素来抓取HTML中的变化。

编辑:这是解析所需 HTML 的方法。右键单击要在 Chrome 中解析的元素,然后选择“检查元素”。现在应该突出显示相应屏幕元素的 HTML。然后,您可以使用 Beautiful Soup 使用元素属性(id、类等)来抓取数据。

希望这会有所帮助。如果您还有其他疑问,请不要犹豫。

【讨论】:

  • 谢谢!我是 BeautifulSoup 的新手,所以我不确定我可以使用哪些方法来解析这个脚本标签下的文本。它不像普通的标签,我可以使用 get_text() 来获取内容。你可以再详细一点吗?再次感谢!
  • 谢谢~我想我刚才没有清楚地描述我的问题所以我编辑了它:) 我已经得到了整个 html 文件,并且可以找到源中元素的位置。我只是不知道如何进入这个脚本标签下的文本。您的回答说“使用元素属性(id、class 等)来抓取数据”。对于我的问题,这是否意味着我只能使用正则表达式而不是某些方法来获取数据(例如:get('href')),因为脚本标签或其下的文本都没有额外的属性。非常感谢!
  • 你误解了我的意思。我是说你应该不理会脚本并专注于 HTML。尝试在屏幕上找到像 Posts (1) 这样的元素,然后检查该元素,而不是脚本标签。
  • 哦,有道理~非常感谢! :)
猜你喜欢
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2010-09-24
  • 1970-01-01
  • 2021-07-07
相关资源
最近更新 更多