1

スクレイピングしたコンテンツをデータ操作用のリストに変換しようとしましたが、次のエラーが発生しました: TypeError: 'NoneType' object is not callable

#! /usr/bin/python

from urllib import urlopen
from BeautifulSoup import BeautifulSoup
import os
import re

# Copy all of the content from the provided web page
webpage = urlopen("http://www.optionstrategist.com/calculators/free-volatility-    data").read()

# Grab everything that lies between the title tags using a REGEX
preBegin = webpage.find('<pre>') # Locate the pre provided
preEnd = webpage.find('</pre>') # Locate the /pre provided

# Copy the content between the pre tags
voltable = webpage[preBegin:preEnd] 

# Pass the content to the Beautiful Soup Module
raw_data = BeautifulSoup(voltable).splitline()
4

2 に答える 2

0

コードは非常に単純です。これは BeautifulSoup4 のコードです。

# Find all <pre> tag in the HTML page
preTags = webpage.find_all('pre')

for tag in preTags:
    # Get the text inside the tag
    print(tag.get_text())

参照:

于 2013-01-20T07:03:46.780 に答える
0

pre最初の要素からテキストを取得するには:

#!/usr/bin/env python
from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup

url = "http://www.optionstrategist.com/calculators/free-volatility-data"
soup = BeautifulSoup(urlopen(url))
print soup.pre.string

データのある行を抽出するには:

from itertools import dropwhile

lines = soup.pre.string.splitlines()
# drop lines before the data table header
lines = dropwhile(lambda line: not line.startswith("Symbol"), lines)
# extract lines with data
lines = (line for line in lines if '%ile' in line)

これで、各行に固定列形式のデータが含まれるようになりました。スライスや正規表現を使用して、各行の個々のフィールドを解析/検証できます。

于 2013-01-20T09:13:57.500 に答える