葡京赌场网址PHP中级篇 Apache配置httpd-vhosts虚拟主机总结与注意事项

除掉前面的#,这样就是被了httpd-vhosts虚拟主机文件。这时候还启wamp环境,无法打开localhost,需要以httpd-vhosts.conf配置一下。

http://matplotlib.org/examples/widgets/radio\_buttons.py

修改php.ini设置memory_limit = 12M(默认8M)

FILE_STORE='E:\scrapy_project\file_download\file'

第三步:在item.py中定义file_url和file两个字段

class FileDownloadItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    file_urls=scrapy.Field()
    files=scrapy.Field()

2,访问权限,如齐Deny from all修改为allow from all

https://files.cnblogs.com/files/zhanghongfeng/file\_download.rar

原文:http://blog.163.com/lgh\_2002/blog/static/44017526201182514650248/

网页结构如下

2,打开host文件(C:\WINDOWS\system32\drivers\etc\hosts),增加一行代码

1 在一个爬虫里,你抓取一个类型,把其中图片的URL放入 file_urls 组内。

要单独待以你的主次头部在: ini_set(“memory_limit”,”12M”);

葡京赌场网址 1

3,重启Apache,发现localhost可以正常打开,配置localhost比较简单。

media_ext得到的凡文件的后缀名也不怕是.py

参考资料:

当FilesPipeline中,下载文件的函数是file_path。主体代码如下

注意事项
1,目录路径,如E:\ProjectRoot\

def parse_link(self,response):
        pattern=re.compile('href=(.*\.py)')
        div=response.xpath('/html/body/div[4]/div[1]/div/div')
        p=div.xpath('//p')[0].extract()
        link=re.findall(pattern,p)[0]
        if ('/') in link:      #针对包含文件,图片的下载链接方式生成:http://matplotlib.org/examples/pyplots/whats_new_99_mplot3d.py
            href='http://matplotlib.org/'+link.split('/')[2]+'/'+link.split('/')[3]+'/'+link.split('/')[4]
        else:     #针对只包含文件的下载链接方式生成:http://matplotlib.org/mpl_examples/statistics/boxplot_demo.py
            link=link.replace('"','')
            scheme=urlparse(response.url).scheme
            netloc=urlparse(response.url).netloc
            temp=urlparse(response.url).path
            path='/'+temp.split('/')[1]+'/'+temp.split('/')[2]+'/'+link
            combine=(scheme,netloc,path,'','','')
            href=urlunparse(combine)
#            print href,os.path.splitext(href)[1]
        file=FileDownloadItem()
        file['file_urls']=[href]
        return file

运行后出现如下的错误:提示ValueError: Missing scheme in request url: h。 

2017-11-21 22:29:53 [scrapy] ERROR: Error processing {'file_urls': u'http://matplotlib.org/examples/api/agg_oo.htmlagg_oo.py'}

Traceback (most recent call last):

  File "E:\python2.7.11\lib\site-packages\twisted\internet\defer.py", line 588, in _runCallbacks

    current.result = callback(current.result, *args, **kw)

  File "E:\python2.7.11\lib\site-packages\scrapy\pipelines\media.py", line 44, in process_item

    requests = arg_to_iter(self.get_media_requests(item, info))

  File "E:\python2.7.11\lib\site-packages\scrapy\pipelines\files.py", line 365, in get_media_requests

    return [Request(x) for x in item.get(self.files_urls_field, [])]

  File "E:\python2.7.11\lib\site-packages\scrapy\http\request\__init__.py", line 25, in __init__

    self._set_url(url)

  File "E:\python2.7.11\lib\site-packages\scrapy\http\request\__init__.py", line 57, in _set_url

    raise ValueError('Missing scheme in request url: %s' % self._url)

ValueError: Missing scheme in request url: h

这个错误的意思是在url中丢失了scheme. 我们知道网址的一般结构是:scheme://host:port/path?。 这里的错误意思就是在scheme中没有找到http而只有一个h. 但是从log记录的来看,我们明明是生成了一个完整的网页呢。为什么会提示找不到呢。原因就在于下面的这个配置使用的是url列表形式

ITEM_PIPELINES = {
#    'file_download.pipelines.SomePipeline': 300,
    'scrapy.pipelines.files.FilesPipeline':1,
}

而我们的代码对于item的赋值却是file['file_urls']=href 字符串的形式,因此如果用列表的方式来提取数据,只有h被提取出来了。因此代码需要成列表的赋值形式。修改为:file['file_urls']=[href]就可以了
  1. <VirtualHost *:80>

  2. ServerAdmin test@biuuu.com

  3. DocumentRoot E:\ProjectRoot\

  4. ServerName test.sallency.com

  5. ErrorLog “logs/dummy-host2.localhost-error.log”

  6. CustomLog “logs/dummy-host2.localhost-access.log” common

  7.  

  8. <Directory E:\ProjectRoot\>

  9. Options FollowSymLinks

  10. AllowOverride All

  11. Order deny,allow

  12. Deny from all

  13. </Directory>

  14.  

  15. </VirtualHost>

先是步:在配备文件settings.py中启用FilesPipeline

http://httpd.apache.org/docs/2.2/vhosts/

接通下进入下载页面,网页结构图如下:点击source_code就可下载文件

在浏览器中测试发现尚是自不起,提示而达到403 Forbidden错误,修改中的Deny
from all为allow from all

urlparse(request.url).path 得到的结果是examples/widgets/span_selector.py

dirname(path)得到的结果是examples/widgets

basename(dirname(path))得到的结果是widgets

join(basename(dirname(str)),basename(str))得到的结果是widgets\ span_selector.py

重写pipeline.py如下:

from scrapy.pipelines.files import FilesPipeline
from urlparse import urlparse
from os.path import basename,dirname,join
class FileDownloadPipeline(FilesPipeline):
    def file_path(self, request, response=None, info=None):
        path=urlparse(request.url).path
        temp=join(basename(dirname(path)),basename(path))
        return '%s/%s' % (basename(dirname(path)), basename(path))

运行程序发现生成的文件名还是散列值的。原因在于在之前的setting.py中,我们设置的是'scrapy.pipelines.files.FilesPipeline':1

这将会直接采用FilesPipeline。现在我们重写了FilesPipeline就需要更改这个设置,改为FileDownloadPipeline

ITEM_PIPELINES = {
#    'file_download.pipelines.SomePipeline': 300,
#    'scrapy.pipelines.files.FilesPipeline':1,
    'file_download.pipelines.FileDownloadPipeline':1,
}

再次运行,得到如下的结果:同一类的文件都被归类到了同一个文件夹下面。

分析:这要是目录访问权限没有装,需要装对目录的访问权!

且文件名采用的是更直观的方式。这样比散列值的文件名看起来直观多了
  1. <Directory />

  2. Options FollowSymLinks

  3. AllowOverride All

  4. Order deny,allow

  5. Deny from all

  6. </Directory>

http://matplotlib.org/examples/pyplots/whats_new_99_mplot3d.py

  1. #Virtual hosts

  2. #Include conf/extra/httpd-vhosts.conf

media_guid = hashlib.sha1(to_bytes(url)).hexdigest()  
media_ext = os.path.splitext(url)[1]

return 'full/%s%s' % (media_guid, media_ext)

2,用记事本打开httpd-vhosts文件,配置好localhost虚拟主机,参照httpd-vhosts文件被实例,修改成如下:

scrapy工程代码如下:

复制以上代码,并开展目录修改,把/替换为E:\WebRoot\biuuu,修改virtualHost代码如下

 

实例一,Apaceh配置localhost虚拟主机步骤
1,用记事本打开apache目录下httpd.conf文件(如:D:\wamp\bin\apache\apache2.2.8\httpd.conf),找到如下模块

照网页为http://matplotlib.org/examples/widgets/span_selector.py

动Apaceh配置httpd-vhosts虚拟主机对于开发人员来说比较简单,但也生主要,仅供参考!

Return的价就是文本路径。从脚看到是文件还是起在full文件下面

3,在浏览器中打开test.sallency.com,发现如下错误403 Forbidden错误
Forbidden You don’t have permission to access / on this server.

第二步:在布局文件settings.py中装置文件下充斥路径

顾银鑫 注:如发生Fatal error: Allowed memory size of 8388608 bytes
exhausted错误

http://matplotlib.org/examples/widgets/menu.py

实例二,Apaceh配置test.biuuu.com虚拟主机步骤

def parse(self,response):
    le=LinkExtractor(restrict_xpaths='//*[@id="matplotlib-examples"]/div',deny='/index.html$')
    for link in le.extract_links(response):
        yield Request(link.url,callback=self.parse_link)

改配置如下:
DocumentRoot 修改也地方wamp环境下之www目录(如:D:\wamp\www)
ServerName改为localhost

程序运行成功。从保存路径来拘禁,在download下面新建了一个full文件夹。然后下载的文件还保存在里面。但是文件名却是00f4d142b951f072.py这种样式的。这些文件称是由于url的散列值的出来的。这种命名方式得以防范重名的文书相互冲突,但是这种文件称最不直观了,我们得再次来定义下载的文件称名

3,host文件,配置虚拟域名host指向
4,httpd文件,打开Include conf/extra/httpd-vhosts.conf模块
5,httpd-vhosts文件,配置虚拟主机

2 项目自从爬虫内回到,进入项目管道。

  1. <VirtualHost *:80>

  2. ServerAdmin test@biuuu.com

  3. DocumentRoot E:\ProjectRoot\

  4. ServerName test.sallency.com

  5. ErrorLog “logs/dummy-host2.localhost-error.log”

  6. CustomLog “logs/dummy-host2.localhost-access.log” common

  7. </VirtualHost>

 

1,方法与齐,复制配置代码修改如下:

https://files.cnblogs.com/files/zhanghongfeng/matplotlib.rar

  1. <VirtualHost *:80>

  2. ServerAdmin webmaster@dummy-host.localhost

  3. DocumentRoot “D:\wamp\www”

  4. ServerName localhost

  5. ServerAlias localhost

  6. ErrorLog “logs/dummy-host.localhost-error.log”

  7. CustomLog “logs/dummy-host.localhost-access.log” common

  8. </VirtualHost>

而是像animation Examples这种索引的链接我们是免需要的

6,还出或是linux 的 selinux 防火墙导致这个原因,切记切记

葡京赌场网址 2

http://httpd.apache.org/docs/2.0/vhosts/examples.html

葡京赌场网址 3

5,重启Apache,虚拟主机配置成功!

再有另外一种植既包含代码链接,又饱含图片链接的

开条件:WAMP
网址:http://www.wampserver.com/en/

葡京赌场网址 4

4,打开httpd文件,找到如下语句

眼前介绍了ImagesPipeline用于下载图片,Scrapy还提供了FilesPipeline用与公事下充斥。和事先的ImagesPipeline一样,FilesPipeline使用时止需要经item的一个突出字段将要下载的文书要图表的url传递让其,它们就是会自行将文件要图片下载到本地。将下载结果信息存入item的另一个奇字段,便于用户以导出文件被查。工作流程如下:

时不时用Apache虚拟主机进行开发和测试,但每次要配备虚拟主机时都习惯性的ctrl+c和ctrl+v,这次由重装系统,需要安排一个新的PHP开发条件虚拟主机,于是总结一下Apaceh配置httpd-vhosts虚拟主机使用办法及步子,便于寻找和动用。

葡京赌场网址 5

  1. 127.0.0.1       test.sallency.com

 

接通下去来查阅网页结构,如下

http://matplotlib.org/examples/widgets/multicursor.py

对这半栽艺术获得相应的链接代码如下:

http://matplotlib.org/mpl_examples/statistics/boxplot_demo.py

葡京赌场网址 6

 

http://matplotlib.org/examples/widgets/span\_selector.py
http://matplotlib.org/examples/widgets/rectangle\_selector.py

 

葡京赌场网址 7

点击animate_decay后登下载页面。Animate_decay的网页链接都于<div
class=”toctree-wrapper compound”>元素下。

4
当文件下充斥了晚,另一个字段(files)将受更新到组织面临。这个组将包含一个字典列表,其中包括下载文件的音讯,比如下载路径、源抓取地址(从 file_urls 组获得)和图表的校验码(checksum)。 files 列表中的文件相继以和源 file_urls 组保持一致。如果某个图片下载失败,将会晤记录下错误信息,图片也未见面出现在 files 组中。

3
当型进入 FilesPipeline,file_urls 组内之URLs将被Scrapy的调度器和下载器(这意味着调度器和下载器的中档件可以复用)安排下载,当先级重胜,会在其他页面被抓取前处理。项目会当斯一定的管道等保持“locker”的状态,直到好文件的下载(或者由于一些原因不就下载)。

下我们来再次写file_path函数用于转移我们团结一心之公文称

matplotlib文件包的下载链接如下,有要的得下载

脚来拘禁下怎样使用:

葡京赌场网址 8

http://matplotlib.org/examples/widgets/slider\_demo.py

ITEM_PIPELINES = {

    'scrapy.pipelines.files.FilesPipeline':1,

}

葡京赌场网址 9

透过此处我们可率先写来我们的网页获取链接的方法:

 

http://matplotlib.org/examples/widgets/lasso\_selector\_demo.py

咱们得望出为数不少网址是底下的款型,widgets是好接近。后面的py文件是这那个类下的文件。我们需要以属于一个不胜类的文书归档到与一个文本夹下面。

打具体的文件下充斥链接来拘禁有如下两栽;

restrict_xpaths设定网页链接的素。Deny将方面的目录链接给挡了。因此得到的还是现实性的文本的下载链接

media_guid得到的凡url的散列值,作为文件称

立刻三步设置后从此,下面就来拘禁下实际的下载了,我们由matplotlib网站上下载示例代码。网址是:http://matplotlib.org/examples/index.html