1

このページをスクレイピングしようとして数日が経ちました: http://londoncoffeeguide.com/

リクエストまたはスクレイピーを使用しようとしましたが、スクレイピングの世界に慣れていないため、ログインする方法が見つかりません。このウェブサイトにリクエストでログインし、BeautifulSoup を使用してスクレイピングすることはできますか? または、スクレイピーでそれを行うことは可能ですか?

さらに、この例に従ってリクエストをテストし、そこにリンクされている同じページを使用してウィキペディアでテストしようとしました。

import requests
from bs4 import BeautifulSoup as bs


def get_login_token(raw_resp):
    soup = bs(raw_resp.text, 'lxml')
    token = [n['value'] for n in soup.find_all('input')
    if n['name'] == 'wpLoginToken']
    return token[0]


payload = {
    'wpName': 'my_login',
    'wpPassword': 'my_pass!',
    'wpLoginAttempt': 'Log in',
    #'wpLoginToken': '',
    }

with requests.session() as s:
    resp = s.get('http://en.wikipedia.org/w/index.php?title=Special:UserLogin')
    payload['wpLoginToken'] = get_login_token(resp)
    print payload
    response_post = s.post('http://en.wikipedia.org/w/index.php?title=Special:UserLogin&action=submitlogin&type=login', data=payload)
    response = s.get('http://en.wikipedia.org/wiki/Special:Watchlist')

    r = bs(response.content)
    print r.get_text()

私が見ているのは、ウィッシュリストページを表示するためにログインするように提案されていることです.

間違いはどこですか?

4

1 に答える 1

1

これでログインできました(はい、アカウントを作成してテストしました)

from mechanize import Browser
    br = Browser()
    br.set_handle_robots(False)
    br.addheaders = [('User-agent', 'Firefox')]
    br.open("http://www.londoncoffeeguide.com")
    for form in br.forms():
        if form.attrs['id'] == 'form':
            br.form = form
    br.form['p$lt$zoneContent$PagePlaceholder$p$lt$zoneRight$logonform$Login1$UserName'] = 'username goes here'
    br.form['p$lt$zoneContent$PagePlaceholder$p$lt$zoneRight$logonform$Login1$Password'] = 'password goes here'
    response = br.submit()

その後response.read()、美しいスープに移り、あらゆる種類のことを行うことができます

于 2013-11-05T01:57:26.053 に答える