1
我無法完全弄清楚這段代碼有什麼問題。我想刮第一頁,然後,對於該頁面上的每個鏈接,轉到第二頁以提取項目描述。當我運行下面的代碼時,我得到:exception.TypeError:url必須是str或unicode,得到列表。這裏是我的代碼:scrapy:請求url必須是str或unicode得到列表
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()
在此先感謝。
您可以添加完整的追蹤? – Jahaja
'print l.get_xpath('.// a/@ href')'看看你得到了什麼。 – furas
你如何解決這個問題?像獲得字符串? – muhammadn