2016-07-24 33 views
0

我想用urllib python库解析网站。我写了这个:我无法获得网页中的html页面的正文元素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)) 

但是网站没有返回body标签的内容。 这是我的程序的结果是:

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引起了这个问题。

回答

0

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

您需要使用类似Selenium这样的浏览器并执行JavaScript,或者您需要在请求页面之前自行设置cookie(从我所看到的,这就是所有的JavaScript代码一样)。您似乎正在加载包含Cookie定义的文件(使用FileCookieJar),但是您尚未包含该内容。