有没有办法让Python点击链接,例如bit.ly链接,然后抓取结果链接?当我正在爬取某个页面时,我只能抓取一个重定向链接,而重定向的页面上包含我需要的信息。
有没有办法让Python点击链接,例如bit.ly链接,然后抓取结果链接?当我正在爬取某个页面时,我只能抓取一个重定向链接,而重定向的页面上包含我需要的信息。
有三种重定向方式
HTTP
- 在响应头中提供信息(使用代码 301、302、3xx)HTML
- 以标签形式出现在 HTML 的 <meta>
中(维基百科:元重定向)JavaScript
- 以如下代码形式出现:window.location = new_url
requests
执行 HTTP
重定向并将所有 URL 保存在 r.history
中。
import requests
r = requests.get('http://' + 'bit.ly/english-4-it')
print(r.history)
print(r.url)
结果:
[<Response [301]>, <Response [301]>]
http://helion.pl/ksiazki/english-4-it-praktyczny-kurs-jezyka-angielskiego-dla-specjalistow-it-i-nie-tylko-beata-blaszczyk,anginf.htm
顺便提一下:SO 不允许在文本中放置 Bitly 链接,所以我使用了连接符。
Selenium
(或类似的模块)打开Web浏览器(它将执行页面上的所有JavaScript),控制Web浏览器并获取数据,单击按钮等。 - furas?variant=33334400198
与产品之间的关联,因此将该字符串添加到HTML中似乎不可能,Selenium是实现获取该URL的唯一方法吗? - ColeWorldSelenium
或其他工具/模块(例如PhantomJS
、PyQt WebKit widget
),这些工具/模块可以执行JavaScript代码。 - furas
requests
自动执行HTTP
重定向并保留所有 URL 的信息在r.history
中。如果页面使用HTML
重定向(在<meta>
标签中),那么您可以轻松地找到它并使用requests
进行访问。requests
无法仅重定向JavaScript
重定向,因为它不执行 JavaScript,并且可能有太多的重定向方法来在代码中查找 URL。 - furas