我已经
有几天试图抓取这个页面了:http://londoncoffeeguide.com/
我尝试使用请求或scrapy,但我是scrapin世界的新手,我找不到登录的方法。是否可以根据请求登录本网站并使用美丽汤进行抓取?还是可以用刮擦来做?
此外,我尝试按照此示例测试请求,并在维基百科上对其进行测试,使用那里链接的相同页面,我尝试了这个:
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()
我看到的是,我仍然收到登录以查看愿望清单页面的建议。
错误在哪里?
我得到了这个登录(是的,我创建了一个帐户并对其进行了测试)
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()
传给美丽的汤,做各种各样的事情