【发布时间】:2014-07-23 18:56:28
【问题描述】:
我无法弄清楚这段代码有什么问题。我想抓取第一页,然后,对于该页面上的每个链接,转到第二页以提取项目描述。当我运行下面的代码时,我得到:exception.TypeError: url must be str or unicode, got list。这是我的代码:
from scrapy.spider import Spider
from scrapy.selector import Selector
from scrapy.http import Request
from scrapy.item import Item, Field
from scrapy.contrib.loader import ItemLoader
from scrapy.contrib.loader.processor import MapCompose, Join
from scrapy.contrib.loader import XPathItemLoader
from my.items import myItem
class mySpider(Spider):
name = "my"
allowed_domains = ["my.com"]
start_urls = ['http://sjg.my.com/cf_jy.cfm']
def parse(self, response):
s = Selector(response)
rows = s.xpath('//table[@class="table-order"]//tr')
for row in rows:
l = XPathItemLoader(item=myItem(), selector=row)
l.default_input_processor = MapCompose(unicode.strip)
l.default_output_processor = Join()
l.add_xpath('title', './/a[contains(@href,"cf_jy.cfm?hu_pg")]/text()')
l.add_xpath('url1', './/a/@href')
l.add_xpath('dates', './/td[4]/text()')
l.add_xpath('rev', './/td[@align="right"]/text()')
l.add_xpath('typ', './/td[3]/text()')
l.add_value('name', u'gsf')
request = Request(l.get_xpath('.//a/@href'), callback=self.parse_link,meta={'l':l})
yield request
def parse_link(self, response):
l = response.meta["l"]
s = Selector(response)
q = s.xpath("//div[@class='content-main']/td[@class='text']/p/text()").extract()
l.add_value('description',q)
yield l.load_item()
提前致谢。
【问题讨论】:
-
你能添加完整的回溯吗?
-
print l.get_xpath('.//a/@href')看看你得到了什么。 -
你是如何解决这个问题的?喜欢获取字符串吗?
标签: python unicode scrapy typeerror