【问题标题】:How to extract text from between tags?如何从标签之间提取文本?
【发布时间】:2016-05-10 16:17:13
【问题描述】:

我正在使用 robobrowser 抓取此页面,页面内有一个 textarea 标记,其中包含我需要复制和存储的信息。

这是我的代码:

>>> captchacode = captchabrowser.find('textarea')
>>> print(captchacode)
<textarea cols="100" rows="5">03AHJ_VuvjiQUpaQ-JFLXqAJaUQ217f7bHqa3hG__VSG1YsbjNtsT2FGFrJksCansOxwuxniksyCsnHJTvlCeGdi2jeqUyuDfUGAQ1WIuJqO55ACslBSUnd-MtAMDIOmbTa1G9uh1QMBdZUTRXwmt1kOn7oNf6ZflnUGAtIOGeTSgx-wu8hOWY-Pw</textarea>

如何获取文本

<textarea cols="100" rows="5">XXXXXX</textarea>

我需要他们自己在一个变量中的XXXXX

【问题讨论】:

  • 存在格式错误,将数据“放入”文本区域是错误的 HTML。应该是 &lt;textarea value="XXXXX"&gt;&lt;/textarea&gt; ,请注意这一点。
  • @aarongillion 我从中抓取的网站就是这样,我无法更改它:(
  • 没关系,我只是指出来了。

标签: python html beautifulsoup screen-scraping robobrowser


【解决方案1】:

这是一个使用python2的快速测试。

from bs4 import BeautifulSoup
html='<textarea cols="100" rows="5">03AHJ_VuvjiQUpaQ-JFLXqAJaUQ217f7bHqa3hG__VSG1YsbjNtsT2FGFrJksCansOxwuxniksyCsnHJTvlCeGdi2jeqUyuDfUGAQ1WIuJqO55ACslBSUnd-MtAMDIOmbTa1G9uh1QMBdZUTRXwmt1kOn7oNf6ZflnUGAtIOGeTSgx-wu8hOWY-Pw</textarea>'
soup = BeautifulSoup(html, 'html.parser')
ta = soup.find('textarea')
if ta:
  print ta.get_text()
else:
  print "no such element"

哪个输出:

03AHJ_VuvjiQUpaQ-JFLXqAJaUQ217f7bHqa3hG__VSG1YsbjNtsT2FGFrJksCansOxwuxniksyCsnHJTvlCeGdi2jeqUyuDfUGAQ1WIuJqO55ACslBSUnd-MtAMDIOmbTa1G9uh1QMBdZUTRXwmt1kOn7oNf6ZflnUGAtIOGeTSgx-wu8hOWY-Pw

如果你只有一个textarea,你可以使用find,否则使用find_all

【讨论】:

  • 我也明白了,但是当我尝试设置 my = ta.get_text() 时,我总是返回 None
  • 你在哪个范围内分配了my
  • 我不确定这意味着什么,我这样做了 my = ta.get_text() print(my)
  • 然后编辑您的原始问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
相关资源
最近更新 更多