我有一个页面,其中包含大量信息的模态,因此您需要滚动.此模态包含指向第二个模态的链接.
当我
模态1失去滚动(仍然有一个滚动条,但它没有做任何事情).相反,模态保持在打开模态2时的位置.
我一开始就用js关闭背景模态(但这会让第二个模态上的滚动变得混乱).似乎每当我尝试打开/关闭多个模态时,我总是会遇到滚动问题.
有关如何处理这个的任何建议?
我是Scrapy的新手,我正在进行刮擦练习,而我正在使用CrawlSpider.尽管Scrapy框架运行得很漂亮并且它遵循相关链接,但我似乎无法使CrawlSpider刮掉第一个链接(主页/登录页面).相反,它会直接刮取规则确定的链接,但不会刮取链接所在的登录页面.我不知道如何解决这个问题,因为不建议覆盖CrawlSpider的解析方法.修改follow = True/False也不会产生任何好结果.以下是代码片段:
class DownloadSpider(CrawlSpider):
name = 'downloader'
allowed_domains = ['bnt-chemicals.de']
start_urls = [
"http://www.bnt-chemicals.de"
]
rules = (
Rule(SgmlLinkExtractor(aloow='prod'), callback='parse_item', follow=True),
)
fname = 1
def parse_item(self, response):
open(str(self.fname)+ '.txt', 'a').write(response.url)
open(str(self.fname)+ '.txt', 'a').write(','+ str(response.meta['depth']))
open(str(self.fname)+ '.txt', 'a').write('\n')
open(str(self.fname)+ '.txt', 'a').write(response.body)
open(str(self.fname)+ '.txt', 'a').write('\n')
self.fname = self.fname + 1
Run Code Online (Sandbox Code Playgroud) 我是Scrapy的新手,我正在尝试使用CrawlSpider从文本文件中抓取多个站点.不过,我想限制刮深度每一次网站,也抓取网页的总数每个网站.不幸的是,当设置start_urls和allowed_domains属性时,response.meta ['depth']似乎总是为零(当我试图抓取单个站点时,这不会发生).在设置文件中设置DEPTH_LIMIT似乎根本不做任何事情.当我删除init定义并简单地设置start_urls和allowed_domains似乎工作正常.这是代码(抱歉缩进 - 这不是问题):
class DownloadSpider(CrawlSpider):
name = 'downloader'
rules = (
Rule(SgmlLinkExtractor(), callback='parse_item', follow=True),
)
def __init__(self, urls_file, N=10):
data = open(urls_file, 'r').readlines()[:N]
self.allowed_domains = [urlparse(i).hostname.strip() for i in data]
self.start_urls = ['http://' + domain for domain in self.allowed_domains]
def parse_start_url(self, response):
return self.parse_item(response)
def parse_item(self, response):
print response.url
print response.meta['depth']
Run Code Online (Sandbox Code Playgroud)
这导致response.meta ['depth']总是等于零,并且cralwer只抓取start_urls的每个元素的第一个站点(即它不跟随任何链接).所以,我有两个问题1)如何抓取限制为一定深度每在start_urls 2)如何限制每个网站抓取的总数不考虑深度的每个部位
谢谢 !
我正在尝试构建一个可以有效地从许多网站上抓取文本信息的蜘蛛.由于我是Python用户,我被提到了Scrapy.但是,为了避免抓取大型网站,我想限制蜘蛛每个网站不超过20页的某个"深度" .这是我的蜘蛛:
class DownloadSpider(CrawlSpider):
name = 'downloader'
download_path = '/home/MyProjects/crawler'
rules = (Rule(SgmlLinkExtractor(), callback='parse_item', follow=True),)
def __init__(self, *args, **kwargs):
super(DownloadSpider, self).__init__(*args, **kwargs)
self.urls_file_path = [kwargs.get('urls_file')]
data = open(self.urls_file_path[0], 'r').readlines()
self.allowed_domains = [urlparse(i).hostname.strip() for i in data]
self.start_urls = ['http://' + domain for domain in self.allowed_domains]
def parse_start_url(self, response):
return self.parse_item(response)
def parse_item(self, response):
self.fname = self.download_path + urlparse(response.url).hostname.strip()
open(str(self.fname)+ '.txt', 'a').write(response.url)
open(str(self.fname)+ '.txt', 'a').write('\n')
Run Code Online (Sandbox Code Playgroud)
urls_file是带有url的文本文件的路径.我还在设置文件中设置了最大深度.这是我的问题:如果我设置了CLOSESPIDER_PAGECOUNT异常,它会在抓取页面的总数(无论哪个站点)达到异常值时关闭蜘蛛.但是,当我从每个网址上说20页时,我需要停止抓取.我也尝试使用像self.parsed_number + = 1这样的变量保持计数,但这也不起作用 - 似乎scrapy不会通过url进行url但是将它们混合起来.任何建议都非常感谢!
我正在研究一个相对较大的基于文本的Web分类问题,我计划在python中使用sklearn中的多项Naive Bayes分类器和爬行的scrapy框架.但是,我有点担心sklearn/python对于可能涉及数百万个网站分类的问题来说可能太慢了.我已经在DMOZ的几千个网站上训练了分类器.研究框架如下:
1)爬虫登陆域名并从站点上的20个链接(深度不大于1)中抓取文本.(对于爬行器的示例运行,此处的标记化单词的数量似乎在几千到高达150K之间变化)2)运行具有大约50,000个特征的sklearn多重NB分类器并根据结果记录域名
我的问题是基于Python的分类器是否适合这种大规模应用程序的任务,还是应该尝试在更快的环境中重写分类器(也可能是刮刀和字标记器)?如果是,那环境可能是什么?或者,如果伴随着代码的某些并行化,Python就足够了?谢谢
当我尝试在scrapyd上运行现有的scrapy项目时出现错误.
我有一个工作scrapy项目(url_finder)和用于测试目的的项目中的一个工作蜘蛛(test_ip_spider_1x),只需下载whatismyip.com.
我成功安装了scrapyd(使用apt-get),现在我想在scrapyd上运行spider.所以我执行:
curl http://localhost:6800/schedule.json -d project=url_finder -d spider=test_ip_spider_1x
Run Code Online (Sandbox Code Playgroud)
返回:
{"status": "error", "message": "'url_finder'"}
Run Code Online (Sandbox Code Playgroud)
这似乎表明该项目存在问题.但是当我执行时:scrapy crawl test_ip_spider_1x
一切运行正常.当我在Web界面中检查scrapyd日志时,这就是我得到的:
2014-04-01 11:40:22-0400 [HTTPChannel,0,127.0.0.1] 127.0.0.1 - - [01/Apr/2014:15:40:21 +0000] "POST /schedule.json HTTP/1.1" 200 47 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3"
2014-04-01 11:40:58-0400 [HTTPChannel,1,127.0.0.1] 127.0.0.1 - - [01/Apr/2014:15:40:57 +0000] "GET / HTTP/1.1" 200 747 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"
2014-04-01 11:41:01-0400 [HTTPChannel,1,127.0.0.1] 127.0.0.1 - - [01/Apr/2014:15:41:00 +0000] "GET /logs/ HTTP/1.1" 200 1203 "http://localhost:6800/" "Mozilla/5.0 (X11; …Run Code Online (Sandbox Code Playgroud) 我正在尝试“利用浏览器缓存”来提高网站速度。webapp 托管在 pythonanywhere 上,我想我需要配置 nginx.conf 文件以包含:
location ~* \.(css|js|gif|jpe?g|png)$ {
expires 168h;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
Run Code Online (Sandbox Code Playgroud)
(从这里开始:如何在 django 中利用浏览器缓存)
但是我在任何地方都找不到 conf 文件。它不在 /etc/nginx、/usr/local/etc /usr/etc ...
这可以在 pythonanywhere 上完成吗?
scrapy ×5
python ×4
web-crawler ×3
html ×1
javascript ×1
jquery ×1
nginx ×1
scikit-learn ×1
scrapyd ×1