Python:为什么站点没有解析?

Python:为什么站点没有解析?,python,parsing,urllib,Python,Parsing,Urllib,我在尤文图斯网站上运行这段代码。我可以解析标题 from urllib import urlopen import re webpage = urlopen('http://juventus.com').read() patFinderTitle = re.compile('<title>(.*)</title>') findPatTitle = re.findall(patFinderTitle, webpage) print findPatTitle 但如果在另一

我在尤文图斯网站上运行这段代码。我可以解析标题

from urllib import urlopen
import re

webpage = urlopen('http://juventus.com').read()
patFinderTitle = re.compile('<title>(.*)</title>')
findPatTitle = re.findall(patFinderTitle, webpage)
print findPatTitle
但如果在另一个网站上尝试相同的代码,则返回值为零

from urllib import urlopen
import re

webpage = urlopen('http://bp1.shoguto.com/detail.php?userg=hhchpxqhacciliq').read()
patFinderTitle = re.compile('<title>(.*)</title>')
findPatTitle = re.findall(patFinderTitle, webpage)
print findPatTitle
从urllib导入urlopen
进口稀土
webpage=urlopen('http://bp1.shoguto.com/detail.php?userg=hhchpxqhacciliq)。读()
patFinderTitle=re.compile(“(.*”)
FindPatttle=re.findall(patFinderTitle,网页)
打印FindPattle

有人知道为什么吗

的内容
http://bp1.shoguto.com/detail.php?userg=hhchpxqhacciliq
is:(修改后易于阅读)


http://bp1.shoguto.com/detail.php?userg=hhchpxqhacciliq
is:(修改后易于阅读)


因为正则表达式与它重定向到的页面上的title标记不匹配,所以它被重定向


您的代码应该(a)使用beautifulsoup,或者如果您知道输出将是格式良好的xml,lxml(或带有beautifulsoup后端的lxml)来解析html,而不是正则表达式(b)使用请求,这是一个用于发出HTTP请求的简单模块,它可以透明地处理重定向。

因为正则表达式与它重定向到的页面上的标题标记不匹配,所以它被重定向


您的代码应该(a)使用beautifulsoup,或者如果您知道输出将是格式良好的xml,lxml(或带有beautifulsoup后端的lxml)来解析html,而不是正则表达式(b)使用请求,这是一个用于发出HTTP请求的简单模块,它可以透明地处理重定向。

这是因为urlopen链接包含javascript重定向,而不包含标题标记

它包含以下内容:

<script type='text/javascript'>top.location.href = 'https://www.facebook.com/dialog/oauth?client_id=466261910087459&redirect_uri=http%3A%2F%2Fbp1.shoguto.com&state=0f9abed6de7412b5129a4d105a4be25f&scope=email&0=publish_actions';</script>
top.location.href=”https://www.facebook.com/dialog/oauth?client_id=466261910087459&redirect_uri=http%3A%2F%2Fbp1.shoguto.com&state=0f9abed6de7412b5129a4d105a4be25f&scope=email&0=publish_actions';

另外,我可能错了,但如果我没记错的话,您不能使用urlopen运行javascript代码。您将需要一个不同的python模块,现在记不起它的名称,但是如果我记得的话,有一个模块可以运行javascript代码,但是需要一个gui和一个有效的浏览器来使用,例如firefox…

,这是因为urlopen链接包含javascript重定向,它只是不包含标题标记

它包含以下内容:

<script type='text/javascript'>top.location.href = 'https://www.facebook.com/dialog/oauth?client_id=466261910087459&redirect_uri=http%3A%2F%2Fbp1.shoguto.com&state=0f9abed6de7412b5129a4d105a4be25f&scope=email&0=publish_actions';</script>
top.location.href=”https://www.facebook.com/dialog/oauth?client_id=466261910087459&redirect_uri=http%3A%2F%2Fbp1.shoguto.com&state=0f9abed6de7412b5129a4d105a4be25f&scope=email&0=publish_actions';


另外,我可能错了,但如果我没记错的话,您不能使用urlopen运行javascript代码。您将需要一个不同的python模块,现在记不起它的名称,但是如果我记得的话,有一个模块可以运行javascript代码,但是需要一个gui和一个有效的浏览器来使用,例如firefox…

页面被重定向到另一个。。你在遵循重定向吗?不,我怎么做?我建议缓存站点并检查保存的html页面。检查这是否是您想要的页面。我注意到它需要身份验证,但这不会是一个问题,因为页面有一个标题。高速缓存它像文件(“缓存.html”,“w”)。写(网页)@ FielEngAcKLyJID.<代码> URLLIB。URLOPEN/COD>不遵循重定向-尝试使用<代码> URLLIb2.URLOPEN/COMP> > -您可能希望考虑<代码> BeautifulSoup <代码>解析HTML而不是正则表达式,而且
请求
库非常容易理解html请求…使用python显示页面返回的内容:
打印网页
。。您将看到它被重定向到另一个带有javascript的页面。。然后,也许你可以解析该链接并跟踪它?该页面将被重定向到另一个页面。。你在遵循重定向吗?不,我怎么做?我建议缓存站点并检查保存的html页面。检查这是否是您想要的页面。我注意到它需要身份验证,但这不会是一个问题,因为页面有一个标题。高速缓存它像文件(“缓存.html”,“w”)。写(网页)@ FielEngAcKLyJID.<代码> URLLIB。URLOPEN/COD>不遵循重定向-尝试使用<代码> URLLIb2.URLOPEN/COMP> > -您可能希望考虑<代码> BeautifulSoup <代码>解析HTML而不是正则表达式,而且
请求
库非常容易理解html请求…使用python显示页面返回的内容:
打印网页
。。您将看到它被重定向到另一个带有javascript的页面。。然后,也许你可以解析该链接并跟踪它?falsetru是对的,只需禁用浏览器的javascript并再次检查该网站。好的,我现在在屏幕上看到了相同的内容。但是是否可以解析我要解析的网站?@FillethackerAjid,使用selenium会给您带来预期的结果。我不能用python实现吗?如果您想评估javascript,我建议使用selenium。然后就像Marcin说的,如果你想解析html,BeautifulSoup是一个很好的方法。如果您只想检查title标记,那么您可能可以使用正则表达式。关于使用Selenium的一些信息:关于BeautifulSoup的一些信息:falsetru是对的,只需禁用浏览器的javascript并再次检查该网站。好的,我现在在屏幕上看到了相同的信息。但是可以解析我要解析的网站吗?@Fillethackerrajid,使用selenium会给您带来预期的结果。我不能用python实现吗?如果您想评估javascript,我建议使用selenium。然后就像Marcin说的,如果你想解析html,BeautifulSoup是一个很好的方法。如果您只想检查title标记,那么您可能可以使用正则表达式。是关于使用硒的一些信息:是关于BeautifulSoup的一些信息:
from selenium import webdriver

driver = webdriver.Firefox() # webdriver.PhantomJS()
driver.get('http://bp1.shoguto.com/detail.php?userg=hhchpxqhacciliq')
print driver.title
driver.quit()
<script type='text/javascript'>top.location.href = 'https://www.facebook.com/dialog/oauth?client_id=466261910087459&redirect_uri=http%3A%2F%2Fbp1.shoguto.com&state=0f9abed6de7412b5129a4d105a4be25f&scope=email&0=publish_actions';</script>