小编Shi*_*dla的帖子

将基础网址与scrapy中产生的href相结合

下面是我的蜘蛛代码,

class Blurb2Spider(BaseSpider):
   name = "blurb2"
   allowed_domains = ["www.domain.com"]

   def start_requests(self):
            yield self.make_requests_from_url("http://www.domain.com/bookstore/new")


   def parse(self, response):
       hxs = HtmlXPathSelector(response)
       urls = hxs.select('//div[@class="bookListingBookTitle"]/a/@href').extract()
       for i in urls:
           yield Request(urlparse.urljoin('www.domain.com/', i[1:]),callback=self.parse_url)


   def parse_url(self, response):
       hxs = HtmlXPathSelector(response)
       print response,'------->'
Run Code Online (Sandbox Code Playgroud)

在这里我试图将href链接与基本链接组合,但我收到以下错误,

exceptions.ValueError: Missing scheme in request url: www.domain.com//bookstore/detail/3271993?alt=Something+I+Had+To+Do
Run Code Online (Sandbox Code Playgroud)

任何人都可以让我知道为什么我收到此错误以及如何加入基本网址与href链接并产生一个请求

python url scrapy

9
推荐指数
2
解决办法
1万
查看次数

从django 1.4.3中的媒体文件夹下载文件(上载的文件)

我正在使用django来设计处理文件夹uploadingdownloading文件media夹的文件的基本网页

其实这些文件在媒体文件夹上传成功,也文件被成功下载,但一个underscore附加到file_name中的last charaterfile_one.pdf_,file_two.pdf_,file_three.txt_ 等等,

以下是我的代码

urls.py

urlpatterns = patterns('',
             url(r'^upload$', 'learn_django.views.upload'),
             url(r'^files_list$', 'learn_django.views.files_list'),
             url(r'^download/(?P<file_name>.+)$', 'learn_django.views.download'),
)
if settings.DEBUG:
    urlpatterns = patterns('',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
) + urlpatterns
Run Code Online (Sandbox Code Playgroud)

views.py

def upload(request):
    ......
    ....
    return render_to_response('uploads_form.html', {'form': form},context_instance=RequestContext(request))


def files_list(request):
    return render_to_response('files_list.html',{'total_files':os.listdir(settings.MEDIA_ROOT),'path':settings.MEDIA_ROOT},context_instance=RequestContext(request))

def download(request,file_name):
    file_path = settings.MEDIA_ROOT +'/'+ file_name
    file_wrapper = FileWrapper(file(file_path,'rb'))
    file_mimetype = mimetypes.guess_type(file_path)
    response = HttpResponse(file_wrapper, content_type=file_mimetype )
    response['X-Sendfile'] = file_path
    response['Content-Length'] = …
Run Code Online (Sandbox Code Playgroud)

python media django file download

9
推荐指数
2
解决办法
9156
查看次数

如何将列表转换为queryset django

我有一个queryset(实际过滤),如下所示

posts = [<Post: published>, <Post: needs>, <Post: be>, <Post: issues>, <Post: to>, <Post: tags>]
Run Code Online (Sandbox Code Playgroud)

但我需要手动过滤上面的查询集,其中一些字段来自另一个表/地方等.

所以我过滤了下面的东西

custom_list = []

for rec in posts:
    if 'string_or_field' in rec.tags.all():
        custom_list.extend(rec)

        or

custom_list = [rec for rec in posts if 'string_or_field' in rec.tags.all()]
Run Code Online (Sandbox Code Playgroud)

因此,正如我们可以在上面观察到的那样,我们list通过过滤a 来创建一个queryset,但我希望结果为a queryset.

那么有没有办法将其转换listqueryset对象?

python django list django-queryset

9
推荐指数
3
解决办法
1万
查看次数

在scrapy中运行多个蜘蛛

  1. 例如,如果我有两个包含不同HTML的URL,则在scrapy中.现在我想为一个人编写两个单独的蜘蛛,并且想要同时运行两个蜘蛛.在scrapy中,可以同时运行多个蜘蛛.

  2. 在编写多个蜘蛛后的scrapy中,我们如何安排它们每6小时运行一次(可能就像cron作业一样)

我不知道上面的内容,你能用一个例子建议我如何执行上述事情.

提前致谢.

python web-crawler scrapy

8
推荐指数
2
解决办法
5532
查看次数

如何使用py文件运行scrapy

嗨我正在研究scrapy,我创建了一个scrapy文件夹,scrapy startproject example 并编写了蜘蛛来从网址中抓取所有数据,我使用命令运行蜘蛛scrapy crawl spider_name,它工作正常并且能够获取数据.

但我有一个要求,我需要运行scrapy与一个蜘蛛文件创建我的意思是一个py文件之类的东西

python -u /path/to/spider_file_inside_scrapy_folder_created.py
Run Code Online (Sandbox Code Playgroud)

scrapy crawl在使用spider.py文件创建scrapy项目文件夹后,是否可以在没有命令的情况下运行spider

python scrapy

8
推荐指数
2
解决办法
4043
查看次数

无法在django python中提供像css,js这样的静态文件

我很新django,并经历了很多天的教程,我已经开始使用django构建一个小网站,并尝试css通过在settings.py文件中安排所有必要的设置来提供文件.但不幸的是我的代码无法提供css文件,我的意思是服务css文件的概念不起作用.我google了很多,并通过django主要文档教程并根据它们进行了更改,但仍然无法工作所以接近SO并粘贴我的下面的整个代码

项目文件夹的结构

 personnel_blog
      |____personnel_blog
      |____manage.py  |  
                      |____media
                      |____static
                      |       |____css
                      |             |____personnel_blog_hm.css 
                      |____template 
                      |        |____home_page.html
                      |____settings.py
                      |____urls.py
                      |____views.py
                      |____wsgi.py         
Run Code Online (Sandbox Code Playgroud)

我的一些settings.py文件设置如下

settings.py

import os
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
DEBUG = True
MEDIA_ROOT = os.path.join(PROJECT_DIR,'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_DIR,'static')
STATIC_URL = '/static/'

STATICFILES_DIRS = (
                    os.path.join(PROJECT_DIR,'static'),
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
) …
Run Code Online (Sandbox Code Playgroud)

python django settings

8
推荐指数
1
解决办法
2万
查看次数

如何在没有py扩展名的情况下运行python文件

我有一个小的python脚本,它从命令行参数获取输入,并使用所做的输入完成一些操作并显示结果

下面是工作示例代码

some_file.py

import sys

arguments = sys.argv
first_name  = sys.argv[1]
second_name = sys.argv[2]

print "Hello {0} {1} !!!!".format(first_name,second_name)
Run Code Online (Sandbox Code Playgroud)

现在我正在执行这个

python some_file.py Steve jobs
Run Code Online (Sandbox Code Playgroud)

结果:

Hello Steve Jobs !!!!
Run Code Online (Sandbox Code Playgroud)

现在我想要的是,我不想在文件名和python文件名的扩展名之前使用python命令,也就是说我想将文件作为命令工具运行,如下所示

some_file  Steve Jobs
Run Code Online (Sandbox Code Playgroud)

那么为了运行如上所述的python文件该怎么办?

python executable

8
推荐指数
2
解决办法
8815
查看次数

使用主管运行芹菜作为守护程序不起作用

我有一个django应用程序,它有芹菜功能,所以我能够成功运行芹菜如下

celery -A tasks worker --loglevel=info
Run Code Online (Sandbox Code Playgroud)

但作为一个众所周知的事实,我们需要将它作为守护进程运行,所以我在celery.conf文件/etc/supervisor/conf.d/夹中写了下面的文件

; ==================================
;  celery worker supervisor example
; ==================================

[program:celery]
; Set full path to celery program if using virtualenv
command=/root/Envs/proj/bin/celery -A app.tasks worker --loglevel=info

user=root
environment=C_FORCE_ROOT="yes"
environment=HOME="/root",USER="root"
directory=/root/apps/proj/structure
numprocs=1
stdout_logfile=/var/log/celery/worker.log
stderr_logfile=/var/log/celery/worker.log
autostart=true
autorestart=true
startsecs=10

; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600

; When resorting to send SIGKILL to the program …
Run Code Online (Sandbox Code Playgroud)

django celery celery-task supervisord

8
推荐指数
1
解决办法
1万
查看次数

使用scrapyd部署项目时出错

我的项目文件夹中有多个蜘蛛,想要一次运行所有的蜘蛛,所以我决定使用scrapyd服务运行它们.我已经开始这样做

首先,我在当前项目文件夹中

  1. 我打开了scrapy.cfg文件,然后取消注释了url行

    [部署]

  2. 我运行了scrapy server命令,运行良好,并且运行了scrapyd服务器

  3. 我试过这个命令 scrapy deploy -l

    结果: default http://localhost:6800/

  4. 当我尝试这个命令时,scrapy deploy -L scrapyd我得到了以下输出

结果:

Usage
=====
  scrapy deploy [options] [ [target] | -l | -L <target> ]

deploy: error: Unknown target: scrapyd
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此命令部署项目时scrapy deploy scrapyd -p default出现以下错误

Usage
=====
  scrapy deploy [options] [ [target] | -l | -L <target> ]

deploy: error: Unknown target: scrapyd
Run Code Online (Sandbox Code Playgroud)

我真的无法识别whey scrapyd是否显示上述错误,可以引导我以正确的方式将项目部署到scrapyd

提前致谢..........

编辑代码:

在看到Peter Kirby的答案之后,我在scrapy.cfg中命名了target并在我的项目文件夹中尝试了以下命令,

命令:

scrapy deploy ebsite …
Run Code Online (Sandbox Code Playgroud)

python scrapy scrapyd

7
推荐指数
1
解决办法
7036
查看次数

查找内存使用情况,CPU利用率,运行python脚本的执行时间

我正在使用python,并假设我有一些代码如下

example.py

import os, psutil
import MySQLdb as mdb

conn = mdb.connect(user='root', passwd='redhat', db='File_Data', host='localhost', charset="utf8")
file_path = "/home/local/user/Module/File_processing/part-file.txt"
p = psutil.Process(os.getpid())
cursor = conn.cursor()

for line in file_open:
    result = line.split('\t')
    query = "insert into PerformaceReport (campaignID, keywordID, keyword, avgPosition)"
    query += " VALUES (%s,%s,'%s',%s)%(result[0],result[1],result[2],result[3])"
    cursor.execute( query )
conn.commit()

print p.get_cpu_times()
print p.get_memory_percent()
Run Code Online (Sandbox Code Playgroud)

上面的代码从文本文件中读取数据并保存到数据库并且工作正常

我正在使用该命令运行该文件 python path/to/the/example.py

现在我要做的是找到/捕获以下三个值/信息

  1. execution timepython脚本(example.py)用于读取数据并将数据保存到数据库的总量
  2. CPU utilization当python脚本(example.py)运行(执行)时
  3. Memory usage当python脚本(example.py)运行(执行)时

我已经用Google搜索了很多,发现了一些信息, 在这里,这里这里 …

python memory cpu-usage execution-time

7
推荐指数
1
解决办法
1万
查看次数