teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

変更

2018/04/19 09:18

投稿

RarigoB
RarigoB

スコア26

title CHANGED
File without changes
body CHANGED
@@ -1,119 +1,4 @@
1
- 分からな
2
- scrapyでクローリングたいサイトのページャーなどのリンクが辿れてないぽい。
3
-
4
- 実現したいこと
5
- 正常にクロールしたい
6
-
7
- 状況
8
- http://777.slopachi-station.com/report_schedule/
9
- 上記のサイトの取材スケジュールを取得するスパイダーを作成しようとしたのですが、リンクがうまく辿れていないみたいです。
10
- 上記のページからページャをたどり、各ページに記載されてる店舗ページにアクセスし、情報を取得しようと考えています。
11
-
12
- ```Python3
13
- from scrapy.spiders import CrawlSpider, Rule
14
- from scrapy.linkextractors import LinkExtractor
15
-
16
- from slotcrawler.items import Shop_data
17
-
18
-
19
- class SlotSpider(CrawlSpider):
20
- name = 'slot'
21
- allowed_domains = ["777.slopachi-station.com"]
22
- start_urls = (
23
- 'http://777.slopachi-station.com/report_schedule/',
24
- )
25
-
26
- rules = [
27
- Rule(LinkExtractor(allow=r'/report_schedule/page/\d+/')),
28
- Rule(LinkExtractor(allow=r'/shop_data/\d+/'),
29
- follow=True,
30
- callback='parse_hall'),
31
- ]
32
-
33
- def parse_hall(self, response):
34
- item=Shop_data(
35
- name=response.xpath('//*[@id="shopDetail"]/div[1]/h2/text()').extract_first(),
36
- scedule=response.xpath('//*[@id="report_schedule"]/div[@class="resultRow resultRow-tile"]/text()').extract(),
37
- add1=response.xpath('//*[@id="breadcrumb"]/a[2]/text()').extract_first(),
38
- add2=response.xpath('//*[@id="breadcrumb"]/a[3]/text()').extract_first(),
39
- )
40
-
41
- yield item
42
-
43
- ```
44
-
45
- ```items.py
46
- import scrapy
47
-
48
-
49
- class Shop_data(scrapy.Item):
50
- name = scrapy.Field
51
- scedule = scrapy.Field
52
- add1 = scrapy.Field
53
- add2 = scrapy.Field
54
-
55
- ```
56
-
57
- seting.pyはダウンロード間隔を追加しました。
58
-
59
- ```terminal
60
- 2018-04-15 22:24:53 [scrapy.utils.log] INFO: Scrapy 1.5.0 started (bot: slotcrawler)
61
- 2018-04-15 22:24:53 [scrapy.utils.log] INFO: Versions: lxml 3.5.0.0, libxml2 2.9.3, cssselect 1.0.1, parsel 1.3.1, w3lib 1.18.0, Twisted 17.9.0, Python 3.5.2 (default, Nov 23 2017, 16:37:01) - [GCC 5.4.0 20160609], pyOpenSSL 17.5.0 (OpenSSL 1.1.0g 2 Nov 2017), cryptography 2.1.4, Platform Linux-4.4.0-119-generic-x86_64-with-Ubuntu-16.04-xenial
62
- 2018-04-15 22:24:53 [scrapy.crawler] INFO: Overridden settings: {'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['slotcrawler.spiders'], 'NEWSPIDER_MODULE': 'slotcrawler.spiders', 'FEED_FORMAT': 'jl', 'FEED_URI': 'hall.jl', 'DOWNLOAD_DELAY': 1, 'BOT_NAME': 'slotcrawler'}
63
- 2018-04-15 22:24:53 [scrapy.middleware] INFO: Enabled extensions:
64
- ['scrapy.extensions.corestats.CoreStats',
65
- 'scrapy.extensions.memusage.MemoryUsage',
66
- 'scrapy.extensions.logstats.LogStats',
67
- 'scrapy.extensions.feedexport.FeedExporter',
68
- 'scrapy.extensions.telnet.TelnetConsole']
69
- 2018-04-15 22:24:53 [scrapy.middleware] INFO: Enabled downloader middlewares:
70
- ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
71
- 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
72
- 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
73
- 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
74
- 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
75
- 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
76
- 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
77
- 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
78
- 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
79
- 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
80
- 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
81
- 'scrapy.downloadermiddlewares.stats.DownloaderStats']
82
- 2018-04-15 22:24:53 [scrapy.middleware] INFO: Enabled spider middlewares:
83
- ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
84
- 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
85
- 'scrapy.spidermiddlewares.referer.RefererMiddleware',
86
- 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
87
- 'scrapy.spidermiddlewares.depth.DepthMiddleware']
88
- 2018-04-15 22:24:53 [scrapy.middleware] INFO: Enabled item pipelines:
89
- []
90
- 2018-04-15 22:24:53 [scrapy.core.engine] INFO: Spider opened
91
- 2018-04-15 22:24:53 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
92
- 2018-04-15 22:24:53 [scrapy.extensions.telnet] DEBUG: Telnet console listening on *************
93
- 2018-04-15 22:24:53 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://777.slopachi-station.com/robots.txt> (referer: None)
94
- 2018-04-15 22:24:54 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://777.slopachi-station.com/report_schedule/> (referer: None)
95
- 2018-04-15 22:24:55 [scrapy.core.engine] INFO: Closing spider (finished)
96
- 2018-04-15 22:24:55 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
97
- {'downloader/request_bytes': 534,
98
- 'downloader/request_count': 2,
99
- 'downloader/request_method_count/GET': 2,
100
- 'downloader/response_bytes': 11277,
101
- 'downloader/response_count': 2,
102
- 'downloader/response_status_count/200': 2,
103
- 'finish_reason': 'finished',
104
- 'finish_time': datetime.datetime(2018, 4, 15, 13, 24, 55, 9470),
105
- 'log_count/DEBUG': 3,
106
- 'log_count/INFO': 7,
107
- 'memusage/max': 54620160,
108
- 'memusage/startup': 54620160,
109
- 'response_received_count': 2,
110
- 'scheduler/dequeued': 1,
111
- 'scheduler/dequeued/memory': 1,
112
- 'scheduler/enqueued': 1,
113
- 'scheduler/enqueued/memory': 1,
114
- 'start_time': datetime.datetime(2018, 4, 15, 13, 24, 53, 523839)}
115
- 2018-04-15 22:24:55 [scrapy.core.engine] INFO: Spider closed (finished)
116
-
117
- ```
118
- このような感じでそもそもページャーも詳細ページもたどれてないみたいです。
119
- 解決策を教えてください。
1
+ scrapyでクローリングしたいときに
2
+ RuleとLinkExtractorを使用ページ辿りたのですが、
3
+ 表示されているページャーの番号のリンクを辿ってしまいます。
4
+ 次へのリンクをどるにはどうすればいでしょうか?