我试图刮网站有一个奇怪的行为。 我把我要检索的页面指向URL,作为普通网站的登录页面,我提交表单元素,然后我想刮下页面,但是在我提交表单之后,网站会给我一个页面,其中有一个选择(两个链接)来选择我的配置文件,在点击选择的配置文件之后,我可以访问我想要的页面。在mechanize中,我不能单击链接来检索我要阅读的页面。 这是我的密码:
from bs4 import BeautifulSoup as bs
import urllib3
import mechanize
import cookielib
cj = cookielib.CookieJar()
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_cookiejar(cj)
br.open("the_url_I_want_scrape")
br.select_form(nr=2)
br.form.set_all_readonly(False)
br.form['username'] = "my_user"
br.form["password"] = "my_pass"
br.form["button.submit"] = "entra"
br.submit()
html = br.response().read()
现在,如果我在链接中迭代,我有两个对象:
for link in br.links():
print link
看起来像是这样:
Link(base_url='https://www.sito.com/internal/login', url='/internal/sessionProperty?sessid=1111', text='Profile1', tag='a', attrs=[('href', '/nternal/sessionProperty?sessid=1111')])
Link(base_url='https://www.sito.com/internal/login', url='/shres/internal/sessionProperty?sessid=3333', text='Profile2', tag='a', attrs=[('href', '/internal/sessionProperty?sessid=3333')])
我怎样才能模拟点击它并解析结果页呢? 我试图添加一个单独的url到链接,然后使用follow链接,但它挂起,不再响应 我使用的代码是:
for link in br.links():
link.absolute_url = mechanize.urljoin(link.base_url,link.url)
br.follow_link(link)
有人能帮我吗? 谢谢你 亚历克斯
当我需要大量使用Javascript(比如隐藏菜单)来抓取网站时,我也有类似的经历,我不得不使用Selenium来模拟浏览器行为,而不是机械化。你可以试试。你知道吗
您还可以跟踪POST请求,如this问题中所述,并尝试模拟它。你知道吗
相关问题 更多 >
编程相关推荐