鱼C论坛

 找回密码
 立即注册
查看: 1883|回复: 10

大神帮忙看下,我是scrapy新手 不知道为什么爬不到东西

[复制链接]
发表于 2020-2-20 18:28:39 | 显示全部楼层 |阅读模式
2鱼币
本帖最后由 ldc2020 于 2020-2-20 20:04 编辑

大神走过路过帮小弟一个忙,对你们来说应该很简单的。
不知道为什么想用scrapy爬鱼C的课后作业标签的链接爬不到。 以下是程序:
import scrapy


class FirstSpider(scrapy.Spider):
    name = 'First'
    allowed_domains = ['fishc.com.cn']
    start_url = [
        'https://fishc.com.cn/forum.php?mod=forumdisplay&fid=243&filter=typeid&typeid=398'
        'https://fishc.com.cn/forum.php?mod=forumdisplay&fid=243&filter=typeid&typeid=403'
    ]

    def parse(self, response):

        sel = scrapy.selector.Selector(response)    # 初始化一个sel
        sites = sel.xpath('//ul[@id="thread_types"]/li[@class="xw1 a"]')
        for site in sites:
            link = site.xpath('a/@href').extract()
            print(link)
然后用cmd 进行调用,得出以下结果:
C:\Users\Administrator\Desktop\python3.8\scrapy\aa>scrapy crawl First
2020-02-20 15:55:17 [scrapy.utils.log] INFO: Scrapy 1.8.0 started (bot: aa)
2020-02-20 15:55:17 [scrapy.utils.log] INFO: Versions: lxml 4.5.0.0, libxml2 2.9.5, cssselect 1.1.0, parsel 1.5.2, w3lib 1.21.0, Twisted 19.10.0, Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)], pyOpenSSL 19.1.0 (OpenSSL 1.1.1d  10 Sep 2019), cryptography 2.8, Platform Windows-10-10.0.18362-SP0
2020-02-20 15:55:17 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'aa', 'NEWSPIDER_MODULE': 'aa.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['aa.spiders']}
2020-02-20 15:55:17 [scrapy.extensions.telnet] INFO: Telnet Password: 1861eef3ccb12504
2020-02-20 15:55:17 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.logstats.LogStats']
2020-02-20 15:55:18 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
'scrapy.downloadermiddlewares.retry.RetryMiddleware',
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
'scrapy.downloadermiddlewares.stats.DownloaderStats']
2020-02-20 15:55:18 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
'scrapy.spidermiddlewares.referer.RefererMiddleware',
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
'scrapy.spidermiddlewares.depth.DepthMiddleware']
2020-02-20 15:55:18 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2020-02-20 15:55:18 [scrapy.core.engine] INFO: Spider opened
2020-02-20 15:55:18 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2020-02-20 15:55:18 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2020-02-20 15:55:18 [scrapy.core.engine] INFO: Closing spider (finished)
2020-02-20 15:55:18 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'elapsed_time_seconds': 0.008003,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2020, 2, 20, 7, 55, 18, 61650),
'log_count/INFO': 10,
'start_time': datetime.datetime(2020, 2, 20, 7, 55, 18, 53647)}
2020-02-20 15:55:18 [scrapy.core.engine] INFO: Spider closed (finished)

什么都没爬出来,帮忙看看原因呀,谢啦
网页如下:

Snipaste_2020-02-20_20-00-35.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-20 20:02:09 | 显示全部楼层
本帖最后由 ldc2020 于 2020-2-20 20:05 编辑

大神们帮一下呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-20 23:50:59 | 显示全部楼层
没有采集到东西,需要确定两点
A>当前页面是否需要权限,即登录可见
B>确定CSS正则书写正确
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-21 07:44:28 | 显示全部楼层
是不是我这里的url是登录后的url?所以爬取不来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-21 10:10:18 | 显示全部楼层
你先print一下response的status和text看一下是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-21 10:53:26 | 显示全部楼层
ldc2020 发表于 2020-2-21 07:44
是不是我这里的url是登录后的url?所以爬取不来?

那你可以post密码,或者退出试试,但应该不是这个的原因,url并没有变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-21 10:58:08 | 显示全部楼层
scrapy有交互式命令,使用交互式命令可以很方便地多次在一个页面上重复爬取,像你这种找不到数据的情况,可以使用交互式命令试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-25 12:34:57 | 显示全部楼层
wongyusing 发表于 2020-2-21 10:10
你先print一下response的status和text看一下是什么

请问response的status和text怎么用啊。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 15:38:00 | 显示全部楼层
ldc2020 发表于 2020-2-25 12:34
请问response的status和text怎么用啊。。。


response 有个状态码
我们期望返回200   

  1.     url= 'https://fishc.com.cn/forum.php?mod=forumdisplay&fid=243&filter=typeid&typeid=398'
  2.     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
  3.     response = requests.get(url,headers=headers)
  4.     print(response.status_code)
复制代码

我这里因为已经登陆,所以能返回200   如果是游客状态,就不知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-27 22:49:56 | 显示全部楼层
Stubborn 发表于 2020-2-20 23:50
没有采集到东西,需要确定两点
A>当前页面是否需要权限,即登录可见
B>确定CSS正则书写正确

有没有办法爬那些需要登录才能进去的网站?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-28 01:05:13 | 显示全部楼层
一个账号 发表于 2020-2-27 22:49
有没有办法爬那些需要登录才能进去的网站?

最简单的,把cookie全部拷贝,放到请求头里面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 17:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表