我无法通过python在web报废中获取html页面的body元素

时间:2016-07-24 11:19:43

标签: python cookies web

我想用urllib python库解析一个网站。我写了这个:

from bs4 import BeautifulSoup
from urllib.request import HTTPCookieProcessor, build_opener
from http.cookiejar import FileCookieJar


def makeSoup(url):
    jar = FileCookieJar("cookies")
    opener = build_opener(HTTPCookieProcessor(jar))
    html = opener.open(url).read()
    return BeautifulSoup(html, "lxml")


def articlePage(url):
    return makeSoup(url)


Links = "http://collegeprozheh.ir/%d9%85%d9%82%d8%a7%d9%84%d9%87-   %d9%85%d8%af%d9%84-%d8%b1%d9%82%d8%a7%d8%a8%d8%aa%db%8c-%d8%af%d8%b1-%d8%b5%d9%86%d8%b9%d8%aa-%d9%be%d9%86%d9%84-%d9%87%d8%a7%db%8c-%d8%ae%d9%88%d8%b1%d8%b4%db%8c%d8%af/"
print(articlePage(Links))

但网站不会返回正文标记的内容。 这是我的计划的结果:

cURL = window.location.href;
var p = new Date();
second = p.getTime();
GetVars = getUrlVars();

setCookie("Human" , "15421469358743" , 10);
check_coockie = getCookie("Human");

if (check_coockie != "15421469358743")
        document.write("Could not Set cookie!");
else
        window.location.reload(true);


</script>
</head><body></body>
</html>

我认为cookie导致了这个问题。

1 个答案:

答案 0 :(得分:0)

该页面使用JavaScript来检查cookie并生成内容。但是,urllib不会处理JavaScript,因此页面不会显示任何内容。

你需要使用Selenium之类的东西作为浏览器并执行JavaScript,或者你需要在请求页面之前自己设置cookie(从我所看到的,这就是全部JavaScript代码确实如此)。您似乎正在加载包含Cookie定义的文件(使用FileCookieJar),但是您没有包含内容。