我试图登录并抓取一个工作网站,并在发现某些关键词时向我发送通知。我想我已经正确地追踪了xpath的值为“登录[iovation]”,但我无法提取值,这是我到目前为止所做的登录
import requests
from lxml import html
header = {"User-Agent":"Mozilla/4.0 (compatible; MSIE 5.5;Windows NT)"}
login_url = 'https://www.upwork.com/ab/account-security/login'
session_requests = requests.session()
#get csrf
result = session_requests.get(login_url)
tree=html.fromstring(result.text)
auth_token = list(set(tree.xpath('//*[@name="login[_token]"]/@value')))
auth_iovat = list(set(tree.xpath('//*[@name="login[iovation]"]/@value')))
# create payload
payload = {
"login[username]": "myemail@gmail.com",
"login[password]": "pa$$w0rD",
"login[_token]": auth_token,
"login[iovation]": auth_iovation,
"login[redir]": "/home"
}
#perform login
scrapeurl='https://www.upwork.com/ab/find-work/'
result=session_requests.post(login_url, data = payload, headers = dict(referer = login_url))
#test the result
print result.text
答案 0 :(得分:0)
这是因为upworks使用名为iOvation(https://www.iovation.com/)的东西来减少欺诈。 iOvation使用您的设备/浏览器的数字指纹,通过login [iovation]参数发送。
如果您查看网站上加载的javascripts,您会发现从iesnare.com域加载了两个javascript。此域名和许多其他域名由iOvaiton拥有,以删除第三方JavaScript以识别您的设备/浏览器。
我认为如果你从成功登录中复制字符串并将其与所有http标题一起发送,包括python代码中的浏览器代理,你应该没问题。
答案 1 :(得分:0)
您确定结果是获取2XX代码
当我是这段代码result = session_requests.get(login_url)
时...它取了一个403状态代码,这意味着我不打算登录_url
答案 2 :(得分:0)
他们现在拥有正式的API,无需抓取,只需注册API密钥即可。