Python 抓取域列表的登录页

Python 抓取域列表的登录页,python,screen-scraping,scrapy,Python,Screen Scraping,Scrapy,我有一个相当长的网站列表,我想下载 的登录(index.html或等效)页面。我目前正在使用Scrapy(非常喜欢它背后的人——这是一个极好的框架)。Scrapy在这个特定的任务上比我想要的慢,我想知道wget或其他替代方案是否会更快,因为任务是多么简单。有什么想法吗 (以下是我对Scrapy所做的。我能做些什么来优化Scrapy以完成此任务?) 所以,我有一个起始URL列表,如 start_url=[google.com 雅虎网站 美国在线[www.aol.com] 我从每个响应中提取文本并将

我有一个相当长的网站列表,我想下载 的登录(index.html或等效)页面。我目前正在使用Scrapy(非常喜欢它背后的人——这是一个极好的框架)。Scrapy在这个特定的任务上比我想要的慢,我想知道wget或其他替代方案是否会更快,因为任务是多么简单。有什么想法吗

(以下是我对Scrapy所做的。我能做些什么来优化Scrapy以完成此任务?)

所以,我有一个起始URL列表,如

start_url=[google.com 雅虎网站 美国在线[www.aol.com]

我从每个响应中提取文本并将其存储在xml中。我需要打开OffItemIDdleware以允许多个域

Scrapy的工作原理与预期一样,但似乎很慢(一小时或一小时内大约1000个) 每4秒)。有没有办法通过增加 运行单个网络时每个网络蜘蛛的并发网络请求数
蜘蛛?还有别的吗

如果您想使用python同时下载多个站点,可以使用以下标准库:

import threading
import urllib

maxthreads = 4

sites = ['google.com', 'yahoo.com', ] # etc.

class Download(threading.Thread):
   def run (self):
       global sites
       while sites:
           site = sites.pop()
           print "start", site
           urllib.urlretrieve('http://' + site, site)
           print "end  ", site

for x in xrange(min(maxthreads, len(sites))):
    Download().start()
您也可以签出
httplib2
PycURL
来代替
urllib
为您下载


我不清楚您希望将刮取的文本显示为xml,但您可以使用标准库中的
xml.etree.ElementTree
,也可以安装
beautifulsou
(这会更好,因为它可以处理格式错误的标记)。

您认为
.pop()
是线程安全的吗?请看,现在有一些优秀的Python库,您可能希望使用-(使用线程池)和(通过urllib3或非阻塞IO使用线程池),而不是编程,您可以将.index html页面的纯文本列表推入其中,并将爬虫设置为链接到0个页面深度。请注意,此软件将仅在本地计算机上创建索引页的副本,可脱机查看。在Scrapy 0.14+中,您将需要调整
并发请求
,而不是旧的
并发请求
设置。