取得Just-Eat的形式

时间:2019-05-04 16:39:10

标签: python python-3.x web-scraping robobrowser

我想在Just-Eat中剪贴表格,但似乎该表格不存在! 我使用该代码:

br.open("https://www.just-eat.fr/")
form = br.get_forms()

但是表格未检测到任何表格!但是,当您继续使用代码源时,我们可以找到一种形式:

<form class="search-form autocomplete-target" action="#" id="geolocate_form_home">

我不知道如何使它可检测!有人知道吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

服务器仅发送带有<iframe>的页面,其中包含出于安全原因而阻止的消息。

User Agent标头中的第一个问题。通常,Python使用python-requests/2.21.0,但是服务器可能需要在实际浏览器中使用User Agent。例如Linux上的Firefox

br = robobrowser.RoboBrowser(user_agent='Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0')

但是它仍然可以发送带有消息的<iframe>页面。

但是如果我再次加载相同的网址,那么它将加载正确的页面。
可能现在它已经需要所有cookie,并且服务器也没有出现问题。

如果您愿意,也可以从<iframe>加载页面,使其表现得像真实的人类。

import robobrowser

br = robobrowser.RoboBrowser(user_agent='Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0')
br.parser = 'lxml'

br.open("https://www.just-eat.fr")
#print(br.parsed)
print(br.get_forms())

#iframe_src = br.select('iframe')[0]['src']
#print(iframe_src)

#br.open("https://www.just-eat.fr"+iframe_src)
#print(br.parsed)

br.open("https://www.just-eat.fr")
#print(br.parsed)
print(br.get_forms())