ジョンとスティーブン、ご回答ありがとうございます。あなたの答えは私に別の考え方をさせ、それが問題の原因と有効な解決策を見つけることにつながりました.
次のテストコードを使用していました。
import urllib
import urllib2
from scrapy.selector import HtmlXPathSelector
from scrapy.http import HtmlResponse
URL = "http://jackjones.bestsellershop.com/DE/jeans/clark-vintage-jos-217-sup/37246/37256"
url_handler = urllib2.build_opener()
urllib2.install_opener(url_handler)
handle = url_handler.open(URL)
response = handle.read()
handle.close()
html_response = HtmlResponse(URL).replace(body=response) # Problematic line
hxs = HtmlXPathSelector(html_response)
desc = hxs.select('//span[@id="attribute-content"]/text()')
desc_text = desc.extract()[0]
print desc_text
print desc_text.encode('utf-8')
Scrapy シェル内で、記述データを抽出したところ、問題なく出力されました。pdb
プロンプトで、抽出されたデータに置換文字が表示されていたため、コードに何か問題があるのではないかと疑う理由がありました。
Response クラスの Scrapy ドキュメントを調べ、上記のコードを次のように調整しました。
import urllib
import urllib2
from scrapy.selector import HtmlXPathSelector
from scrapy.http import HtmlResponse
URL = "http://jackjones.bestsellershop.com/DE/jeans/clark-vintage-jos-217-sup/37246/37256"
url_handler = urllib2.build_opener()
urllib2.install_opener(url_handler)
handle = url_handler.open(URL)
response = handle.read()
handle.close()
#html_response = HtmlResponse(URL).replace(body=response)
html_response = HtmlResponse(URL, body=response)
hxs = HtmlXPathSelector(html_response)
desc = hxs.select('//span[@id="attribute-content"]/text()')
desc_text = desc.extract()[0]
print desc_text
print desc_text.encode('utf-8')
html_response = HtmlResponse(URL).replace(body=response)
私が行った変更は、行をに置き換えることでしたhtml_response = HtmlResponse(URL, body=response)
。replace()
この方法は、エンコーディングの観点から何らかの形で特殊文字をマングリングしていたと理解しています。
メソッドが正確に何をreplace()
間違っていたのか、詳細を教えてくれる人がいれば、その努力に感謝します。
もう一度ありがとう。