Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 包含所有标记的完整html代码不是来自站点_Python_Html - Fatal编程技术网

Python 包含所有标记的完整html代码不是来自站点

Python 包含所有标记的完整html代码不是来自站点,python,html,Python,Html,我编写了一个Python WebScraper,如下所示: import urllib2,cookielib from BeautifulSoup import BeautifulSoup url = 'http://www.nseindia.com/live_market/dynaContent/live_analysis/top_gainers_losers.htm?cat=G&utm_campaign=website&utm_source=sendgrid.com&

我编写了一个Python WebScraper,如下所示:

import urllib2,cookielib
from BeautifulSoup import BeautifulSoup

url = 'http://www.nseindia.com/live_market/dynaContent/live_analysis/top_gainers_losers.htm?cat=G&utm_campaign=website&utm_source=sendgrid.com&utm_medium=email'
hdr = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36',
       'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
       }
req = urllib2.Request(url, headers=hdr)
try:
    page = urllib2.urlopen(req)
except urllib2.HTTPError, e:
    print e.fp.read()

content = page.read()
print content

现在,在这个url中有一个表,我需要对其进行刮取,但是当我尝试运行此代码时,返回的html缺少大量的
标记。如何打印完整的html?

假设您的问题实际上是“如何从表中获取数据?”而不是“如何在web浏览器中查看html”,解决方案是,正如评论中指出的,使用Firebug或Chrome的开发工具查看您想要的内容的来源:

import requests                                                                 
import json                                                                     

r = requests.get("http://www.nseindia.com/live_market/dynaContent/"
                 "live_analysis/gainers/niftyGainers1.json")
data_as_json = json.loads(r.content)

for stock_info in data_as_json['data']:                   
    for key, value in stock_info.items():                                       
        print key, value

(我更喜欢使用urllib2来处理HTTP。)

这是JavaScript添加到目标页面的“缺失”标记吗?听起来很有可能。对于任何web scraper来说,在没有特定指示的情况下选择性地更改传入文档都是非常奇怪的。加载主页后,Javascript模块将加载该表。您将无法以这种方式刮取数据。您应该寻找一个API。网站所有者可能有一个,但很可能是收费的。如果您要查找的数据是通过JavaScript加载的,那么这些数据可能来自AJAX调用,也可能存在于页面的其他位置。检查浏览器调试器中的网络活动以获取AJAX调用。如果有的话,这就是您想要“刮取”的内容(如果是结构化JSON数据,这可能会变得容易得多)。如果没有AJAX调用,请检查加载的页面中的JavaScript代码中的数据或页面上隐藏的其他地方的数据。是否有其他方法不使用API???我可以用硒吗??。。你可以用刮痧