Python错误-重定向尝试解析网页

标签 python html web-scraping

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://www.animeplus.tv/anime-show-list/")
content =(html.read())
soup = BeautifulSoup(content)
print(soup.prettify())

该脚本在其他网页上运行良好,但我为我得到的目标网站运行该程序。

<meta .$_server["request_uri"]."'"="" content="0;URL='" http-equiv="refresh"/>

我不太明白html代码。

我认为这是某种重定向或防止网络抓取的方法。

有没有办法让Python在重定向后访问代码或者以浏览器返回源代码的方式访问代码?

谢谢!

最佳答案

这里的技巧是页面重定向到自身并设置 Cookie header ,这很重要,没有它,您将无法获得在浏览器中看到的 HTML。

这是使用 requests 的解决方案- 在同一 session 中打开同一页面:

import requests
from bs4 import BeautifulSoup

url = "http://www.animeplus.tv/anime-show-list/"
session = requests.session()
session.get(url)
response = session.get(url)  # open up the page second time
soup = BeautifulSoup(response.content)
print(soup.title.text)  # prints: "Watch Anime | Anime Online | Free Anime | English Anime | Watch Anime Online - AnimePlus.tv"

或者,您可以使用 mechanize ,但目前不支持 python 3。其工作原理如下:

>>> import mechanize
>>> browser = mechanize.Browser()
>>> browser.open('http://www.animeplus.tv/anime-show-list/')
>>> print browser.response().read()
<!DOCTYPE html>
<html>
<head>
  <title>Watch Anime | Anime Online | Free Anime | English Anime | Watch Anime Online - AnimePlus.tv</title> 
...

关于Python错误-重定向尝试解析网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463104/

相关文章:

python - 如何检查数据是否存在于 firebase 中。 (KivyMD Python)

javascript - HTML5播放器无法在多个浏览器中使用

javascript - Bootstrap 大下拉菜单不同宽度大小

javascript - 使用 z-index 剪切标签

python - 在 python 2.7 中使用 lxml 进行网页抓取时缺少一列和多余的空格/换行符

html - 按类和标签名称的网页抓取元素

python - 使用 Pyfoobar 将歌曲长度更改为数字

python - 如何清除/删除 tensorflow 中的张量?

web-scraping - 如何首先从特定 channel 抓取新的YouTube视频?

python - fastapi 依赖 vs 中间件