在检索搜索到的页面之前,在登录后呈现一个选择的网站的刮擦

2024-09-24 02:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图刮网站有一个奇怪的行为。 我把我要检索的页面指向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)

有人能帮我吗? 谢谢你 亚历克斯


Tags: brimportformurl表单base网站链接
1条回答
网友
1楼 · 发布于 2024-09-24 02:22:14

当我需要大量使用Javascript(比如隐藏菜单)来抓取网站时,我也有类似的经历,我不得不使用Selenium来模拟浏览器行为,而不是机械化。你可以试试。你知道吗

您还可以跟踪POST请求,如this问题中所述,并尝试模拟它。你知道吗

相关问题 更多 >