0

私はscrap.pyライブラリを使用してWebサイトをスクレイプしています。(ライブラリとドキュメントはここhttp://zesty.ca/scrape/にあります)

セッションで押したいページにボタンがありますが、送信機能の使い方がよくわかりません。私が理解しているように、私はそれにフォームのリージョンオブジェクトを与えることになっています。ボタン自体は入力html要素です。フォームと入力の両方を指定しようとしましたが、毎回同じエラーが発生します。

私のコード(グーグルアプリエンジン上):

s.go(url)
form = s.doc.first(name="form1")
s.submit(region=form)

また

s.go(url)
input = s.doc.first(tagname="input", id="blabla")
s.submit(region=input)

とエラー:

ERROR    2011-05-01 23:37:18,673 __init__.py:427] sequence item 0: expected string, NoneType found
Traceback (most recent call last):
  File "\appengine\ext\webapp\__init__.py", line 636, in __call__
    handler.post(*groups)
  File "main.py", line 135, in post
    s.submit(region=form)
  File "scrape.py", line 342, in submit
    return self.go(url, p, redirects)
  File "scrape.py", line 288, in go
    self.cookiejar)
  File "scrape.py", line 176, in fetch
    data = urlencode(data)
  File "scrape.py", line 409, in urlencode
    for key, value in params.items()]
  File "scrape.py", line 405, in urlquote
    return ''.join(map(urlquoted.get, text))
TypeError: sequence item 0: expected string, NoneType found
4

2 に答える 2

1

はい、私はこれが1歳であることを知っていますが、私は現在scrap.pyを使用しており、この質問に対する答えを知っているので、後から来る人のために追加する必要があると思いました。

問題は送信にあります。

s.submit(region = form)の代わりにs.submit(form)にする必要があります。

その理由は、変数形式に次のようなものが含まれている<Region 1254:1250>ため、scrap.pyにそこにあることを伝える必要はなく、そこにあることが期待されているためです。

したがって、おそらくJavascriptとは何の関係もありません。

于 2012-08-22T12:25:31.127 に答える
0

私の推測では、ボタンとフォームがjavascriptで覆われているためか、scrapはおそらくそれで機能しませんでした。セレンや風車など、JSをサポートするライブラリが必要です。

于 2011-05-08T22:21:38.793 に答える