我正在使用一个非常简单的网络刮刀抓取23770个网页scrapy.我对scrapy甚至python都很陌生,但设法编写了一个完成这项工作的蜘蛛.然而,它真的很慢(爬行23770页大约需要28个小时).
我查看了scrapy网页和邮件列表stackoverflow,但我似乎无法找到编写快速爬虫的通用建议,这对于初学者来说是可以理解的.也许我的问题不是蜘蛛本身,而是我运行它的方式.欢迎所有建议!
我已经在下面列出了我的代码,如果需要的话.
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item, Field
import re
class Sale(Item):
Adresse = Field()
Pris = Field()
Salgsdato = Field()
SalgsType = Field()
KvmPris = Field()
Rum = Field()
Postnummer = Field()
Boligtype = Field()
Kvm = Field()
Bygget = Field()
class HouseSpider(BaseSpider):
name = 'House'
allowed_domains = ["http://boliga.dk/"]
start_urls = ['http://www.boliga.dk/salg/resultater?so=1&type=Villa&type=Ejerlejlighed&type=R%%C3%%A6kkehus&kom=&amt=&fraPostnr=&tilPostnr=&iPostnr=&gade=&min=&max=&byggetMin=&byggetMax=&minRooms=&maxRooms=&minSize=&maxSize=&minsaledate=1992&maxsaledate=today&kode=&p=%d' %n for n in xrange(1, 23770, 1)]
def parse(self, response):
hxs = HtmlXPathSelector(response) …Run Code Online (Sandbox Code Playgroud) 我知道那里有几个相关的线程,他们帮助了我很多,但我仍然不能一路走来.我正处于运行代码不会导致错误的程度,但我的csv文件中没有任何内容.我有以下Scrapy蜘蛛在一个网页上开始,然后跟随一个超链接,并抓取链接的页面:
from scrapy.http import Request
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item, Field
class bbrItem(Item):
Year = Field()
AppraisalDate = Field()
PropertyValue = Field()
LandValue = Field()
Usage = Field()
LandSize = Field()
Address = Field()
class spiderBBRTest(BaseSpider):
name = 'spiderBBRTest'
allowed_domains = ["http://boliga.dk"]
start_urls = ['http://www.boliga.dk/bbr/resultater?sort=hus_nr_sort-a,etage-a,side-a&gade=Septembervej&hus_nr=29&ipostnr=2730']
def parse2(self, response):
hxs = HtmlXPathSelector(response)
bbrs2 = hxs.select("id('evaluationControl')/div[2]/div")
bbrs = iter(bbrs2)
next(bbrs)
for bbr in bbrs:
item = bbrItem()
item['Year'] = bbr.select("table/tbody/tr[1]/td[2]/text()").extract()
item['AppraisalDate'] …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算不平衡数据集的滚动方式.为了说明我的观点,我制作了这个数据的玩具示例:
ID year Var RollingAvg(Var)
1 2000 2 NA
1 2001 3 2
1 2002 4 2.5
1 2003 2 3
2 2001 2 NA
2 2002 5 2
2 2003 4 3.5
Run Code Online (Sandbox Code Playgroud)
该列RollingAvg(Var)是我想要的,但不能得到.在的话,我要寻找的所有以前观测的滚动平均值Var为每ID.我曾尝试使用rollapply,并ddply在zoo和plyr包,但我看不出如何设置滚动窗口长度用于每个ID的所有的以前的意见.也许我应该使用plm包呢?任何帮助表示赞赏.
我在BALANCED面板数据集上看到了关于滚动方式的其他帖子,但我似乎无法推断他们对不平衡数据的回答.
谢谢,
中号
我有一个Houses在一个sql server数据库上调用的表,它有一个包含(丹麦语)地址的列.在丹麦,街道名称总是在门牌号码之前,然后是公寓信息,如果它是公寓.我想将街道名称和数字分成两个字符串并忽略公寓信息.我的数据如下:
Address
Fisker Vejen 48B, 1.TV
Baunevej 29
Run Code Online (Sandbox Code Playgroud)
因此,一些街道名称有超过1个单词,有些地址有公寓信息,有些则没有.一些门牌号也有非数字字符.我希望它是:
Street_Name House_Number
Fisker Vejen 48B
Baunevej 29
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码提取街道名称:
select case when a.NumStart> 0 then LEFT(a.Address,a.NumStart-1) ELSE a.Address END as Street_Name,
FROM
(select patindex('%[0-9]%',Address) as [NumStart], Address from Houses) a
Run Code Online (Sandbox Code Playgroud)
但是如果没有楼层信息,我无法获得门牌号码.有人可以帮忙吗?
谢谢!
我正在尝试读取csv由 Sql Server Management Studio 生成的文件,并UTF-8 通过. 我无法让 R 正确显示特殊字符。Rread.csv2()
如果我将fileEncoding="UTF-8-BOM"导入停止在有 \xc3\xbf 的行。但是,打开 \xc3\xbf 中的文件时,Notepad++可以使用编码正确显示UTF-8。我尝试过不进行设置fileEncoding,但是特殊字符无法正确显示(当然)。
csv 文件可在此处获取:\n https://www.dropbox.com/s/7y47i826ikq8ahi/Data.csv
\n如何读取 csv 文件并以正确的编码显示文本?
\n谢谢!!
\n我有以下简单的web scraper Scrapy:
#!/usr/bin/env python
# -*- coding: latin-1 -*-
from scrapy.http import Request
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
class MySpiderTest(BaseSpider):
name = 'MySpiderTest'
allowed_domains = ["boliga.dk"]
start_urls = ["http://www.boliga.dk/bbrinfo/3B71489C-AEA0-44CA-A0B2-7BD909B35618",]
def parse(self, response):
hxs = HtmlXPathSelector(response)
item = bbrItem()
print hxs.select("id('unitControl')/div[2]/table/tbody/tr[td//text()[contains(.,'Antal Badeværelser')]]/td[2]/text()").extract()
Run Code Online (Sandbox Code Playgroud)
但是当我运行蜘蛛时,我得到以下语法错误:
SyntaxError: Non-ASCII character '\xe6' in file... on line 32, but no encoding declared
Run Code Online (Sandbox Code Playgroud)
因为æ在xpath.该XPath是在工作Xpath Checker的Firefox.我尝试过URL编码æ,但是没有用.我错过了什么?
谢谢!
更新:我在代码的开头添加了编码声明(Latin-1应该支持丹麦字符)
scrapy ×3
web-scraping ×3
python ×2
r ×2
callback ×1
performance ×1
plyr ×1
python-2.7 ×1
sql ×1
sql-server ×1
string ×1
xpath ×1
zoo ×1