2

私はこれに12時間取り組んできましたが、誰かが私に足を踏み入れてくれることを願っています.

これが私のコードです。ページがクロールするときに、ページ上のすべてのリンクのアンカーと URL を取得するだけです。

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.utils.url import urljoin_rfc
from scrapy.utils.response import get_base_url
from urlparse import urljoin

#from scrapy.item import Item
from tutorial.items import DmozItem

class HopitaloneSpider(CrawlSpider):
name = 'dmoz'
allowed_domains = ['domain.co.uk']
start_urls = [
    'http://www.domain.co.uk'
]

rules = (
    #Rule(SgmlLinkExtractor(allow='>example\.org', )),
    Rule(SgmlLinkExtractor(allow=('\w+$', )), callback='parse_item', follow=True),
)

user_agent = 'Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))'

def parse_item(self, response):
    #self.log('Hi, this is an item page! %s' % response.url)

    hxs = HtmlXPathSelector(response)
    #print response.url
    sites = hxs.select('//html')
    #item = DmozItem()
    items = []

    for site in sites: 

                   item = DmozItem()
                   item['title'] = site.select('a/text()').extract()
                   item['link'] = site.select('a/@href').extract()

                   items.append(item)

    return items

私が間違っていることは…今、目が痛いです。

4

2 に答える 2

3

response.body はあなたが望むものでなければなりません

def parse_item(self, response):
    #self.log('Hi, this is an item page! %s' % response.url)

    body = response.body
    item = ....
于 2013-03-29T07:01:32.140 に答える
1

1 つのページにすべてのリンクを取得するには:

def parse_item(self, response):
  hxs = HtmlXPathSelector(response)
  items = []
  links = hxs.select("//a")

  for link in links: 

                 item = DmozItem()
                 item['title'] = site.select('text()').extract()
                 item['link'] = site.select('@href').extract()

                 items.append(item)

return items
于 2012-11-19T14:29:11.460 に答える