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在重定向后访问代码或浏览器返回源代码的方式?
谢谢!
答案 0 :(得分:2)
这里的技巧是页面重定向到自身并设置重要的Cookie
标头,没有它你就不会得到你在浏览器中看到的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>
...