admin管理员组文章数量:1529462
python学习中爬取网站视频时由于python本身不能地址限制的原因,不能直接用response = requests.get(url)获取到网页源代码,进而无法爬取网站信息。
我以猫眼网为例:
访问猫眼代码如下:
import requests
from requests.exceptions import RequestException
def get_one_page(url):
response = requests.get(url)
try:
if response.status_code == 200:
return response.text
return None
except RequestException:
return None
def main():
url = 'http://maoyan/board/4'
html = get_one_page(url)
print(html)
if __name__ == '__main__':
main()
控制台会出现这样的代码,如果把它写在html里,就是一个禁止访问的页面:
<body>
<header>
<h3><span class="icon">⛔️</span>很抱歉,您的访问被禁止了</h3>
</header>
<main>
<p>? 如何恢复?</p>
<ol>
<li>
• 您可以尝试切换网络环境,例如:关闭 Wi-Fi、关闭 VPN 等网络代理再尝试访问
</li>
<li>
• 如果您认为当前网络的封禁是误报,请提交您的联系方式,以便我们核实
<form method="POST" action="?__oceanus_forbidden=1">
<input type="text" name="contact" required placeholder="请输入手机号或者邮箱地址" />
<button class="row" type="submit">提交</button>
</form>
</li>
</ol>
</main>
<footer>
<a href="https://maoyan">猫眼电影</a>
<a href="mailto:oceanus.feedback@maoyan">邮件反馈</a>
</footer>
</body>
解决方法:是这种访问一般都是代码后台访问网站,现在稍微有点反扒意识的网站,都不能正常爬取到,这个时候返回的状态码也不是200,所以我们给他加入头部信息,可以直接在网页上审查元素,点network,再点doc,查看他的**(user-agent)用户代理就行的,这就是个访问浏览器的方式,当我们不用这个头部信息的时候,有些网站就认为我们不是从浏览器访问的,就不给你爬取,所以我们加上这个头部信息就行了,但是有些网站的反扒措施比较好,就像知乎**,就算把所有的头部信息都加在里面,甚至是登录后的cookies,也不能拿到首页的源代码,必须模拟登录,现在介绍这个是最简单的,就是加个用户代理**"Mizilla/5.0**"就行了。
import requests
from requests.exceptions import RequestException
def get_one_page(url):
headers = {"user-agent": "Mizilla/5.0"}
response = requests.get(url, headers=headers)
try:
if response.status_code == 200:
return response.text
return None
except RequestException:
return Noneain():
url = 'http://maoyan/board/4'
html = get_one_page(url)
print(html)
if __name__ == '__main__':
main()
现在便可以正常访问一些普通的网站。
版权声明:本文标题:python中requests模块有些网站不能访问解决方案 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1726627252a1078891.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论