Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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确定网站上的站点数_Python_Url_Web Scraping - Fatal编程技术网

用python确定网站上的站点数

用python确定网站上的站点数,python,url,web-scraping,Python,Url,Web Scraping,我有以下链接: url的参考部分包含以下信息: A7==议会(当前是第七届议会,前者是A6,以此类推) 2010年=年 0001==文件编号 对于每年和议会,我想确定网站上的文件数量。例如,2010年,数字186195196有空页,而最大数字为214,这使得任务变得复杂。理想情况下,输出应该是一个包含所有文档编号(不包括缺少的编号)的向量 有人能告诉我这在python中是否可行吗 最好的办法是,托马斯首先,确保删除他们的网站是合法的 其次,请注意,当文档不存在时,HTML文件包含: <t

我有以下链接:

url的参考部分包含以下信息:

A7==议会(当前是第七届议会,前者是A6,以此类推)

2010年=年

0001==文件编号

对于每年和议会,我想确定网站上的文件数量。例如,2010年,数字186195196有空页,而最大数字为214,这使得任务变得复杂。理想情况下,输出应该是一个包含所有文档编号(不包括缺少的编号)的向量

有人能告诉我这在python中是否可行吗


最好的办法是,托马斯首先,确保删除他们的网站是合法的

其次,请注意,当文档不存在时,HTML文件包含:

<title>Application Error</title>

首先,确保删除他们的网站是合法的

其次,请注意,当文档不存在时,HTML文件包含:

<title>Application Error</title>

这里有一个稍微更完整(但很粗糙)的示例(使用urllib2),它似乎有效——我相信您可以根据自己的特定需求定制它

我还要重复Arrieta关于确保网站所有者不介意你删除网站内容的警告

#!/usr/bin/env python
import httplib2
h = httplib2.Http(".cache")

parliament = "A7"
year = 2010

#Create two lists, one list of URLs and one list of document numbers.
urllist = []
doclist = []

urltemplate = "http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=%s-%d-%04u&language=EN"

for document in range(0,9999):
    url = urltemplate % (parliament,year,document)
    resp, content = h.request(url, "GET")
    if content.find("Application Error") == -1:
        print "Document %04u exists" % (document)    
        urllist.append(urltemplate % (parliament,year,document))
        doclist.append(document)
    else:
        print "Document %04u doesn't exist" % (document)
print "Parliament %s, year %u has %u documents" % (parliament,year,len(doclist))

这里有一个稍微更完整(但很粗糙)的示例(使用urllib2),它似乎有效——我相信您可以根据自己的特定需求定制它

我还要重复Arrieta关于确保网站所有者不介意你删除网站内容的警告

#!/usr/bin/env python
import httplib2
h = httplib2.Http(".cache")

parliament = "A7"
year = 2010

#Create two lists, one list of URLs and one list of document numbers.
urllist = []
doclist = []

urltemplate = "http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=%s-%d-%04u&language=EN"

for document in range(0,9999):
    url = urltemplate % (parliament,year,document)
    resp, content = h.request(url, "GET")
    if content.find("Application Error") == -1:
        print "Document %04u exists" % (document)    
        urllist.append(urltemplate % (parliament,year,document))
        doclist.append(document)
    else:
        print "Document %04u doesn't exist" % (document)
print "Parliament %s, year %u has %u documents" % (parliament,year,len(doclist))

下面是一个解决方案,但在请求之间添加一些超时是一个好主意:

import urllib
URL_TEMPLATE="http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-%d-%.4d&language=EN"
maxRange=300

for year in [2010, 2011]:
    for page in range(1,maxRange):
        f=urllib.urlopen(URL_TEMPLATE%(year, page))
        text=f.read()
        if "<title>Application Error</title>" in text:
            print "year %d and page %.4d NOT found" %(year, page)
        else:
            print "year %d and page %.4d FOUND" %(year, page)
        f.close()
导入urllib
URL_模板=”http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-%d-%.4d和语言=英语“
最大范围=300
[2010、2011]年度:
对于范围内的页面(1,最大范围):
f=urllib.urlopen(URL_模板%(年,页))
text=f.read()
如果文本中出现“应用程序错误”:
打印“未找到%d年和%.4d页”%(年,页)
其他:
打印“找到%d年和%.4d页”%(年,页)
f、 关闭()

这里有一个解决方案,但在请求之间添加一些超时是个好主意:

import urllib
URL_TEMPLATE="http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-%d-%.4d&language=EN"
maxRange=300

for year in [2010, 2011]:
    for page in range(1,maxRange):
        f=urllib.urlopen(URL_TEMPLATE%(year, page))
        text=f.read()
        if "<title>Application Error</title>" in text:
            print "year %d and page %.4d NOT found" %(year, page)
        else:
            print "year %d and page %.4d FOUND" %(year, page)
        f.close()
导入urllib
URL_模板=”http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-%d-%.4d和语言=英语“
最大范围=300
[2010、2011]年度:
对于范围内的页面(1,最大范围):
f=urllib.urlopen(URL_模板%(年,页))
text=f.read()
如果文本中出现“应用程序错误”:
打印“未找到%d年和%.4d页”%(年,页)
其他:
打印“找到%d年和%.4d页”%(年,页)
f、 关闭()

非常感谢,这里的所有答案都是很好的例子!非常感谢,这里所有的答案都是很好的例子!谢谢,非常有帮助!该网站是公开的(毕竟这些是我们选出的议员:),所以我想法律方面不应该是一个问题。谢谢,非常有用!该网站是公开的(毕竟这些都是我们选出的议员:),所以我想法律方面不应该成为问题。感谢Jon非常详细的回答,这对于一个学习python的人来说是很棒的东西!感谢Jon提供了非常详细的答案,对于学习python的人来说,这是一件很棒的事情!