学习scrapy爬虫,请帮忙看下问题出在哪。

US13032530 2015-12-21 12:54:18
最近学着用scrapy做爬虫,感觉真的很麻烦,比如说爬个网页上的段子:
www.qiushibaike.com

代码如下
zou@zou-VirtualBox:~/qsbk$ tree
.
items.py
qsbk
nit__.py
items.py
pipelines.py
settings.py
spiders
_init__.py
qsbk_spider.py
scrapy.cfg

-------------------------
vi items.py

from scrapy.item import Item,Field

class TutorialItem(Item):
# define the fields for your item here like:
# name = Field()
pass

class Qsbk(Item):
title = Field()
link = Field()
desc = Field()

-----------------------
vi qsbk/spiders/qsbk_spider.py

from scrapy.spider import Spider

class QsbkSpider(Spider):
name = "qsbk"
allowed_domains = ["qiushibaike.com"]
start_urls = ["http://www.qiushibaike.com"]

def parse(self, response):
filename = response
open(filename, 'wb').write(response.body)

------------------------

然后我 scrapy shell www.qiushibaike.com 想先把网页取下来,再xpath里面的子节点(即一些内容)
这个想法应该没错吧,但是到scrapy shell www.qiushibaike.com的时候网页内容就无法显示了,
错误反馈:
zou@zou-VirtualBox:~/qsbk$ scrapy shell http://www.qiushibaike.com
/home/zou/qsbk/qsbk/spiders/qsbk_spider.py:1: ScrapyDeprecationWarning: Module `scrapy.spider` is deprecated, use `scrapy.spiders` instead
from scrapy.spider import Spider
2015-12-21 00:18:30 [scrapy] INFO: Scrapy 1.0.3 started (bot: qsbk)
2015-12-21 00:18:30 [scrapy] INFO: Optional features available: ssl, http11
2015-12-21 00:18:30 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'qsbk.spiders', 'SPIDER_MODULES': ['qsbk.spiders'], 'LOGSTATS_INTERVAL': 0, 'BOT_NAME': 'qsbk'}
2015-12-21 00:18:30 [scrapy] INFO: Enabled extensions: CloseSpider, TelnetConsole, CoreStats, SpiderState
2015-12-21 00:18:30 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats
2015-12-21 00:18:30 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2015-12-21 00:18:30 [scrapy] INFO: Enabled item pipelines:
2015-12-21 00:18:30 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2015-12-21 00:18:30 [scrapy] INFO: Spider opened
2015-12-21 00:18:30 [scrapy] DEBUG: Retrying <GET http://www.qiushibaike.com> (failed 1 times): [<twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionDone'>>]
2015-12-21 00:18:30 [scrapy] DEBUG: Retrying <GET http://www.qiushibaike.com> (failed 2 times): [<twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionDone'>>]
2015-12-21 00:18:30 [scrapy] DEBUG: Gave up retrying <GET http://www.qiushibaike.com> (failed 3 times): [<twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionDone'>>]
Traceback (most recent call last):
File "/usr/local/bin/scrapy", line 11, in <module>
sys.exit(execute())
File "/usr/local/lib/python2.7/dist-packages/scrapy/cmdline.py", line 143, in execute
_run_print_help(parser, _run_command, cmd, args, opts)
File "/usr/local/lib/python2.7/dist-packages/scrapy/cmdline.py", line 89, in _run_print_help
func(*a, **kw)
File "/usr/local/lib/python2.7/dist-packages/scrapy/cmdline.py", line 150, in _run_command
cmd.run(args, opts)
File "/usr/local/lib/python2.7/dist-packages/scrapy/commands/shell.py", line 63, in run
shell.start(url=url)
File "/usr/local/lib/python2.7/dist-packages/scrapy/shell.py", line 44, in start
self.fetch(url, spider)
File "/usr/local/lib/python2.7/dist-packages/scrapy/shell.py", line 87, in fetch
reactor, self._schedule, request, spider)
File "/usr/lib/python2.7/dist-packages/twisted/internet/threads.py", line 122, in blockingCallFromThread
result.raiseException()
File "<string>", line 2, in raiseException
twisted.web._newclient.ResponseNeverReceived: [<twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionDone'>>]


这个应该修改哪里?

题外话,刚学scrapy2天,感觉不怎么方便用这个东西,应该是我学的还不够吧,各位公司里做爬虫的话用什么,很看重scrapy吗?聊聊吧!
...全文
3960 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
c_java_123 2016-05-11
  • 打赏
  • 举报
回复
引用 7 楼 sinat_20625509 的回复:
ScrapyDeprecationWarning: Module `scrapy.spider` is deprecated, use `scrapy.spiders` instead from scrapy.spider import Spider 就是这个问题解决了吗?
用scrapy.spiders
sinat_20625509 2016-03-27
  • 打赏
  • 举报
回复
ScrapyDeprecationWarning: Module `scrapy.spider` is deprecated, use `scrapy.spiders` instead from scrapy.spider import Spider 就是这个问题解决了吗?
soft_south 2016-02-17
  • 打赏
  • 举报
回复
引用 5 楼 nice_fish 的回复:
[quote=引用 4 楼 henan_csdn 的回复:] 现在的网站对爬虫还是比较反感的,所以我们在爬取的时候一定要想方设法让我们的爬虫像人一样去浏览,楼主的问题我也遇到过,我的总结如下: 1、User-agent头是网站判断爬虫的第一道大门,我在网上搜索了100多个agent头串,保存成txt文件,程序运行时读取到一个数组中,每次打开链接时都随机从数组中挑选一个。 2、爬虫爬取的时间一定要控制好,大量的爬虫快速爬取服务器对服务器性能会产生较大的压力,所以在爬取的时候,写一个随机事件方法,一般而言我都设置1-2秒左右的随机暂停时间,这样也是为了模拟人的访问间隔 3、楼主可以试一下用BeautifulSoup+urllib2来编写爬虫,个人认为更加适合糗百这种信息结构较为简单的网站,对于爬虫的理解也会更加深刻一点。 以上是我学习的一些小总结,楼主可以借鉴一下,有不足的地方也请各路大神指教哈~
现在网上的例子都是拿urilib2来写的,其实reqeusts更好用,自带json 的解析,编码自动解决,相比方便很多。[/quote] 是的,我也是最近才知道有这么一个库,打算抽时间好好学习一下哈
  • 打赏
  • 举报
回复
引用 4 楼 henan_csdn 的回复:
现在的网站对爬虫还是比较反感的,所以我们在爬取的时候一定要想方设法让我们的爬虫像人一样去浏览,楼主的问题我也遇到过,我的总结如下: 1、User-agent头是网站判断爬虫的第一道大门,我在网上搜索了100多个agent头串,保存成txt文件,程序运行时读取到一个数组中,每次打开链接时都随机从数组中挑选一个。 2、爬虫爬取的时间一定要控制好,大量的爬虫快速爬取服务器对服务器性能会产生较大的压力,所以在爬取的时候,写一个随机事件方法,一般而言我都设置1-2秒左右的随机暂停时间,这样也是为了模拟人的访问间隔 3、楼主可以试一下用BeautifulSoup+urllib2来编写爬虫,个人认为更加适合糗百这种信息结构较为简单的网站,对于爬虫的理解也会更加深刻一点。 以上是我学习的一些小总结,楼主可以借鉴一下,有不足的地方也请各路大神指教哈~
现在网上的例子都是拿urilib2来写的,其实reqeusts更好用,自带json 的解析,编码自动解决,相比方便很多。
soft_south 2016-02-14
  • 打赏
  • 举报
回复
现在的网站对爬虫还是比较反感的,所以我们在爬取的时候一定要想方设法让我们的爬虫像人一样去浏览,楼主的问题我也遇到过,我的总结如下: 1、User-agent头是网站判断爬虫的第一道大门,我在网上搜索了100多个agent头串,保存成txt文件,程序运行时读取到一个数组中,每次打开链接时都随机从数组中挑选一个。 2、爬虫爬取的时间一定要控制好,大量的爬虫快速爬取服务器对服务器性能会产生较大的压力,所以在爬取的时候,写一个随机事件方法,一般而言我都设置1-2秒左右的随机暂停时间,这样也是为了模拟人的访问间隔 3、楼主可以试一下用BeautifulSoup+urllib2来编写爬虫,个人认为更加适合糗百这种信息结构较为简单的网站,对于爬虫的理解也会更加深刻一点。 以上是我学习的一些小总结,楼主可以借鉴一下,有不足的地方也请各路大神指教哈~
  • 打赏
  • 举报
回复
因为你没有合理的Headers ,所以直接被ban掉了。
panghuhu250 2015-12-29
  • 打赏
  • 举报
回复
scrapy的user agent暴露了它是一个爬虫, 被屏蔽了. shell命令可以加上参数"USER_AGENT = "Mozilla..." (自己换成合适的agent字符串). 真正扒的时候要把这个设定放到setting.py中,具体自己看文档.
iii9527 2015-12-28
  • 打赏
  • 举报
回复
很看重赶紧学 能用到地方很多 而且也缺人

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧