以下是我试图搜索的网站源代码的一部分。
<th>会社名</th>
<td colspan="2">
<p class="realtorName">
<ruby>株式会社エリア・エステート 川崎店</ruby>
</p>
</td>
这只是一个测试蜘蛛,看看scrapy是否正在获取任何数据
# -*- coding: utf-8 -*-
import scrapy
class TestSpider(scrapy.Spider):
name = "test"
allowed_domains = ["homes.co.jp"]
start_urls = ['http://www.homes.co.jp/realtor/mid-122457hNYEJwIO7kDs/']
def parse(self, response):
yield{
'FAX':response.xpath('//*[@id="anchor_realtorOutline"]/div[1]/table/tbody/tr/th[contains(text(), "FAX")]/following-sibling::td/text()').extract(),
'Company_Name':response.xpath('//*[@id="anchor_realtorOutline"]/div[1]/table/tbody/tr/th[contains(text(), "会社名")]/following-sibling::td/p[1]/ruby/text()').extract(),
'TEl':response.xpath('//*[@id="anchor_realtorOutline"]/div[1]/table/tbody/tr/th[contains(text(), "TEL")]/following-sibling::td/text()').extract(),
}
'TEL'和'FAX'字段会返回数据,但scrapy会为字段'Company_Name'抛出错误
错误:
All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters.
我想要做的是用日语匹配该字符串,并从上述源代码中提到的兄弟标记中获取文本。
奇怪的事实是它昨天跑了并且刮掉了数据。现在它正在返回错误。
我是否需要做一些事情来包含日文字符?
答案 0 :(得分:1)
尝试附加u
附加字符串,就像这样
'Company_Name':response.xpath(u'//*[@id="anchor_realtorOutline"]/div[1]/table/tbody/tr/th[contains(text(), "会社名")]/following-sibling::td/p[1]/ruby/text()').extract(),
答案 1 :(得分:0)
你的xpath无法工作的原因是tbody
。您必须将其删除并检查是否得到了您想要的结果。
您可以在scrapy文档中阅读:http://doc.scrapy.org/en/0.14/topics/firefox.html
Firefox尤其以添加
<tbody>
元素而着称 表。另一方面,Scrapy不会修改原始页面 HTML,因此如果您使用<tbody>
,则无法提取任何数据 你的XPath表达式。