Я хочу извлечь данные из http://community.sellfree.co.kr/. Scrapy работает, однако, похоже, он очищает только start_urls
и не сканирует никакие ссылки.
Я бы хотел, чтобы паук обошел весь сайт.
Вот мой код:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from metacritic.items import MetacriticItem
class MetacriticSpider(BaseSpider):
name = "metacritic" # Name of the spider, to be used when crawling
allowed_domains = ["sellfree.co.kr"] # Where the spider is allowed to go
start_urls = [
"http://community.sellfree.co.kr/"
]
rules = (Rule (SgmlLinkExtractor(allow=('.*',))
,callback="parse", follow= True),
)
def parse(self, response):
hxs = HtmlXPathSelector(response) # The XPath selector
sites = hxs.select('/html/body')
items = []
for site in sites:
item = MetacriticItem()
item['title'] = site.select('//a[@title]').extract()
items.append(item)
return items
На странице есть два типа ссылок. Один onclick="location='../bbs/board.php?bo_table=maket_5_3'
, а другой <a href="../bbs/board.php?bo_table=maket_5_1&sca=프로그램/솔루션"><span class="list2">solution</span></a>
Как я могу заставить поисковый робот переходить по обоим типам ссылок?
CrawlSpider
: попробуйте сclass MetacriticSpider(CrawlSpider):
- person paul trmbrth   schedule 01.02.2014CrawlSpider
И НЕ переопределяйте методparse
, попробуйтеparse_item
, как предложил другой пользователь. - person R. Max   schedule 02.02.2014