我昨天安装了一个条带包,现在我的应用程序没有运行.我试图了解问题所在.有什么事情做PyShell或HTLParser或别的东西.我发布了GAE标签,希望日志中的跟踪可以提供有关问题的线索:
MLStripper instance has no attribute 'rawdata'
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__
handler.post(*groups)
File "/base/data/home/apps/ting-1/1.354723388329082800/ting.py", line 2070, in post
pitch_no_tags = strip_tags(pitch_original)
File "/base/data/home/apps/ting-1/1.354723388329082800/ting.py", line 128, in strip_tags
s.feed(html)
File "/base/python_runtime/python_dist/lib/python2.5/HTMLParser.py", line 107, in feed
self.rawdata = self.rawdata + data
AttributeError: MLStripper instance has no attribute 'rawdata'
Run Code Online (Sandbox Code Playgroud)
这是MLStripper:
from HTMLParser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
set()
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html): …Run Code Online (Sandbox Code Playgroud) 我一直在尝试将nginx设置为jetty的代理.我想做一些像这个答案中解释的但是Jetty没有响.
我已创建了一个.war并将其放入~/jetty/jetty-dist/webapps/web_test-0.1.0-SNAPSHOT-standalone.war
说,我想使用域名example.com与IP地址198.51.100.0.
我也复制/etc/nginx/sites-available/default到文件中,example.com并将它放在同一目录中.
在我的情况下,你能帮我配置nginx作为jetty的代理吗?我知道网上有很多关于如何做到这一点的参考资料,但它们都不同,我感到困惑.
我需要在nginx中进行哪些具体更改?我需要在jetty.xml中进行哪些更改?我是否需要进行任何其他更改?我的应用会在example.com/index.html上发布吗?
nginx的当前状态复制如下:
upstream jetty {
server 127.0.0.1:8080 fail_timeout=0
}
server {
listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
proxy_pass http://jetty
try_files $uri $uri/ =404;
}
Run Code Online (Sandbox Code Playgroud)
编辑
我想知道我是否需要使用Jetty.在这个设置中他只使用戒指,这似乎超级容易?使用码头可以获得什么?
我正在尝试在我的应用中实施Stripe付款https://stripe.com/.我需要包含这个库https://stripe.com/docs/libraries.我下载并安装在Lib/site-packages上.我检查了IDLE并且import stripe工作.如何将其包含在我的应用程序文件夹中?
请在Scrapy文档中查看此蜘蛛示例.解释是:
这个蜘蛛会开始抓取example.com的主页,收集类别链接和项链接,使用parse_item方法解析后者.对于每个项目响应,将使用XPath从HTML中提取一些数据,并且将使用它填充项目.
我完全复制了同一个蜘蛛,并将"example.com"替换为另一个初始URL.
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from stb.items import StbItem
class StbSpider(CrawlSpider):
domain_name = "stb"
start_urls = ['http://www.stblaw.com/bios/MAlpuche.htm']
rules = (Rule(SgmlLinkExtractor(allow=(r'/bios/.\w+\.htm', )), callback='parse', follow=True), )
def parse(self, response):
hxs = HtmlXPathSelector(response)
item = StbItem()
item['JD'] = hxs.select('//td[@class="bodycopysmall"]').re('\d\d\d\d\sJ.D.')
return item
SPIDER = StbSpider()
Run Code Online (Sandbox Code Playgroud)
但是我的蜘蛛"stb"并没有收集"/ bios /"的链接,因为它应该这样做.它运行初始URL,擦除item['JD']并将其写入文件然后退出.
为什么SgmlLinkExtractor被忽略了?在Rule读,因为它抓住了里面的语法错误Rule行.
这是一个错误吗?我的代码中有什么问题吗?除了我在每次运行中看到的一堆未处理错误外,没有任何错误.
很高兴知道我在这里做错了什么.谢谢你的任何线索.我误解了该怎么SgmlLinkExtractor办?
在回答上一个问题时,有几个人建议我将BeautifulSoup用于我的项目.我一直在努力处理他们的文档而我无法解析它.有人可以指出我应该能够将此表达式转换为BeautifulSoup表达式的部分吗?
hxs.select('//td[@class="altRow"][2]/a/@href').re('/.a\w+')
Run Code Online (Sandbox Code Playgroud)
以上表达来自Scrapy.我试图以应用正则表达式re('\.a\w+')来td class altRow从那里得到的链接.
我也很感激指向任何其他教程或文档.我找不到任何东西.
谢谢你的帮助.
编辑: 我正在看这个页面:
>>> soup.head.title
<title>White & Case LLP - Lawyers</title>
>>> soup.find(href=re.compile("/cabel"))
>>> soup.find(href=re.compile("/diversity"))
<a href="/diversity/committee">Committee</a>
Run Code Online (Sandbox Code Playgroud)
但是,如果你看一下页面来源"/cabel"是:
<td class="altRow" valign="middle" width="34%">
<a href='/cabel'>Abel, Christian</a>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,BeautifulSoup看不到搜索结果,但XPath可以看到它们,因为hxs.select('//td[@class="altRow"][2]/a/@href').re('/.a\w+')捕获了"/ cabel"
编辑: cobbal:它仍然无法正常工作.但当我搜索这个:
>>>soup.findAll(href=re.compile(r'/.a\w+'))
[<link href="/FCWSite/Include/styles/main.css" rel="stylesheet" type="text/css" />, <link rel="shortcut icon" type="image/ico" href="/FCWSite/Include/main_favicon.ico" />, <a href="/careers/northamerica">North America</a>, <a href="/careers/middleeastafrica">Middle East Africa</a>, <a href="/careers/europe">Europe</a>, <a href="/careers/latinamerica">Latin America</a>, <a href="/careers/asia">Asia</a>, <a href="/diversity/manager">Diversity Director</a>] …Run Code Online (Sandbox Code Playgroud) 每次输入s来自表单; 在list重新初始化.如何更改代码以将每个新附加s到列表中?
谢谢.
class Test(webapp.RequestHandler):
def get(self):
s = self.request.get('sentence')
list = []
list.append(s)
htmlcode1 = HTML.table(list)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使SgmlLinkExtractor工作.
这是签名:
SgmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths(), tags=('a', 'area'), attrs=('href'), canonicalize=True, unique=True, process_value=None)
Run Code Online (Sandbox Code Playgroud)
我正在使用 allow=()
所以,我进入
rules = (Rule(SgmlLinkExtractor(allow=("/aadler/", )), callback='parse'),)
Run Code Online (Sandbox Code Playgroud)
所以,最初的网址是'http://www.whitecase.com/jacevedo/',我正在进入,allow=('/aadler',)并期望
'/aadler/'也会被扫描.但相反,蜘蛛扫描初始网址然后关闭:
[wcase] INFO: Domain opened
[wcase] DEBUG: Crawled </jacevedo/> (referer: <None>)
[wcase] INFO: Passed NuItem(school=[u'JD, ', u'Columbia Law School, Harlan Fiske Stone Scholar, Parker School Recognition of Achievement in International and Foreign Law, ', u'2005'])
[wcase] INFO: Closing domain (finished)
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
这里有没有人成功使用Scrapy谁可以帮助我完成这个蜘蛛?
感谢您的帮助.
我在下面包含了蜘蛛的代码:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor …Run Code Online (Sandbox Code Playgroud) 文档声明sqlite3有一个命令行shell:"要启动sqlite3程序,只需键入"sqlite3",然后输入包含SQLite数据库的文件名." 当我尝试这个时,在Windows命令提示符中,我收到错误消息"'sqlite3'不被识别为内部或外部命令,可操作程序或批处理文件." Windows资源管理器在各个地方显示了几个"Sqlite3"文件夹:
backends(C:/Python26/Lib/site-packages/django/db)
Lib(C:/Python26)
backends(C:/Django-1.1.1/Django-1.1.1/build/lib/django/db
backends(C:/Django-1.1.1/Django-1.1.1/django/db)
Run Code Online (Sandbox Code Playgroud)
我如何访问shell,任何人都可以帮忙吗?
这是一个跟进我的问题在这里.我已经设置了一个家庭服务器(只是我的其他笔记本电脑运行ubuntu和nginx),我想提供clojure文件.
我正在请求帮助以了解此过程的工作原理.对不起,我很困惑,我想我需要重新开始.我问了一个新问题,因为我想用nginx没有lein ring server,作为答案这个问题建议.
首先,我guestbook和leiningen 开始了一个项目,然后我跑了lein ring server,我看到了"Hello World" localhost:3000.据我所知,这与nginx无关!
nginx如何进入这个过程?起初我试图用nginx创建一个代理服务器,但也有效,但我不知道如何使用该设置提供clojure文件.
这是我在我的nginx.conf文件中改编的答案:
upstream ring {
server 127.0.0.1:3000 fail_timeout=0;
}
server {
root /home/a/guestbook/resources/public;
# make site accessible from http://localhost
server_name localhost;
location / {
# first attempt to serve request as file
try_files $uri $uri/ @ring;
}
location @ring {
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_pass http://ring;
}
location ~ ^(assets|images|javascript|stylesheets|system)/ {
expires max;
add_header …Run Code Online (Sandbox Code Playgroud) 我从这里拿了这个脚本:
import csv
from itertools import izip
f = open( '/django/sw2/wkw2/csvtest1.csv', 'r' )
reader = csv.reader( f )
keys = ( "firm_url", "firm_name", "first", "last", "school", "year_graduated" )
out = []
for property in reader:
property = iter( property )
data = {}
for key in keys:
data[ key ] = property.next()
out += [ data ]
print out
Run Code Online (Sandbox Code Playgroud)
当我在IDLE中尝试它时,我收到了错误
Traceback (most recent call last):
File "<pyshell#13>", line 5, in <module>
data [key] = property.next()
StopIteration
Run Code Online (Sandbox Code Playgroud)
但我试过了
print …Run Code Online (Sandbox Code Playgroud)