urllib2 返回的页面与浏览器不同?

2 投票
5 回答
2864 浏览
提问于 2025-04-16 01:01

我正在尝试抓取一个页面(我路由器的管理页面),但是这个设备似乎给urllib2返回了一个和我浏览器上看到的不同的页面。有没有人遇到过这种情况?我该怎么解决这个问题?

这是我正在使用的代码:

>>> from BeautifulSoup import BeautifulSoup
>>> import urllib2
>>> page = urllib2.urlopen("http://192.168.1.254/index.cgi?active_page=9133&active_page_str=page_bt_home&req_mode=0&mimic_button_field=btn_tab_goto:+9133..&request_id=36590071&button_value=9133")
>>> soup = BeautifulSoup(page)
>>> soup.prettify()

(html输出被markdown去掉了)

5 个回答

0

使用Wireshark这个工具,可以查看你浏览器发送的请求是什么样子的,然后把缺少的部分加上,这样你的请求就能和它看起来一样了。

如果想要调整urllib2的请求头,可以试试这个链接

1

比起使用Wireshark,更简单的方法是用Firebug来查看正在发送的请求格式,然后在你的代码中模仿这个请求。

5

使用firebug可以查看发送到服务器的请求头和 cookies。然后,你可以用urllib2.Requestcookielib来模拟相同的请求。

补充:你也可以使用mechanize这个工具。

撰写回答