【问题标题】:How to I make the result of this a variable?如何使这个结果成为一个变量?
【发布时间】:2010-03-04 23:41:24
【问题描述】:

现在它设置为写入文件,但我希望它将值输出到变量。不知道怎么做。

from BeautifulSoup import BeautifulSoup
import sys, re, urllib2
import codecs


woof1 = urllib2.urlopen('someurl').read()
woof_1 = BeautifulSoup(woof1)
woof2 = urllib2.urlopen('someurl').read()
woof_2 = BeautifulSoup(woof2)

GE_DB = open('GE_DB.txt', 'a')

for row in woof_1.findAll("tr", { "class" : "row_b" }):
  for col in row.findAll(re.compile('td')):
    GE_DB.write(col.string if col.string else '')
GE_DB.write("   ")
GE_DB.write("\n")
GE_DB.close()
for row in woof_2.findAll("tr", { "class" : "row_b" }):
  for col in row.findAll(re.compile('td')):
    GE_DB.write(col.string if col.string else '')
GE_DB.write("\n")
GE_DB.close()

【问题讨论】:

  • 如果您解释(1)您理解“将值输出到变量”的含义以及一旦完成(2)您的脚本将如何处理“变量”,这将非常有帮助-- 只是从脚本末尾掉下来似乎不值得第 1 步的努力。
  • 好的,所以当您在带有表格的站点上运行上述脚本时。它需要 td 标签之间的内容。我希望它将其值存储为变量。
  • 大众-1票怎么了?

标签: python variables beautifulsoup scrape


【解决方案1】:
values = []
for row in woof_1.findAll("tr", { "class" : "row_b" }):
  for col in row.findAll(re.compile('td')):
    if col.string:
      values.append(col.string)
result = ''.join(values)

【讨论】:

  • 我得到的 | 语法无效if (col.string) |上)不知道为什么。 =/ 我做了什么?
  • @Pevo,对不起,我在 if 语句后错过了一个冒号。已更正。
  • 您的通讯员省略了必要的:,但包含了多余的() ;-)
  • 这一个的工作方式和 | 有什么区别?乔纳森·范伯格的回答|这个作品给我解释一下?
  • @John Machin,这是处理其他语言时的一种习惯。也更正了:)。
【解决方案2】:

删除所有提及 GE_DB。

做一个 outputtext = "" 开始。

GE_DB.write(col.string if col.string else '') 替换为outputtext += col.string if col.string else ''

【讨论】:

    【解决方案3】:

    可能是这样的。

    gedb = "";
    for row in woof_1.findAll("tr", { "class" : "row_b" }):
      for col in row.findAll(re.compile('td')):
        if col.string:
          gedb += col.string
    

    【讨论】:

    【解决方案4】:
    import cStringIO as StringIO   # or import StringIO if on a fringe platform
    buf = StringIO.StringIO()
    for row in woof_1.findAll("tr", { "class" : "row_b" }):
      for col in row.findAll(re.compile('td')):
        buf.write(col.string if col.string else '')
    
    result = buf.getvalue()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      相关资源
      最近更新 更多