2011-09-01 3 views
1

현재 파이썬을 기반으로하는 웹 크롤링 프레임 워크 인 scrapy으로 작업하고 있습니다. 데이터는 XPATH을 사용하여 html에서 추출됩니다. (나는 Python을 처음 사용한다.) 데이터 치료를 감싸기 위해 아이템을 사용한다. ID가 print item['id']처럼 인쇄 할 때 I 출력파이썬에서 문자열로 작업하면 이상한 따옴표가 생깁니다

[u'12346'] 

내 문제는이 출력이 동일한 형태로 항상되지 않는 것입니다 다음 얻을

item = MyItem() 

item['id'] = obj.select('div[@class="id"]').extract() 

. 가끔

"[u""someText""]" 

이 내용은 텍스트 발생과 같은 출력을 얻을 수 있지만, 실제로는 단지 ID처럼 corretly 처리됩니다 다른 텍스트에 비해 텍스트 speciall 아무것도 없다.

인용 부호가 무슨 뜻인지 아는 사람이 있습니까? someText는 다른 모든 텍스트 데이터처럼 크롤링되었습니다. from

<a>someText</a> 

아이디어가 있으십니까?

편집 :

내 거미는 블로그의 모든 페이지를 크롤링합니다. 여기에 내가 항상 같은 블로그 게시물이 인용 부호가 나타났습니다

item['title'] = site.select('div[@class="header"]/h2/a/@title').extract() 

로 추출 정확한 출력

[u'41039'];[u'title] 

[u'40942'];"[u""title""]"] 

... 

입니다. 그래서 그들은 무작위로 나타납니다. 그러나이 텍스트에는 특별한 것이 없습니다. 예 : 이 제목은 그래서 내 첫번째 생각이 때문에 일부 특수 문자입니다 있지만이이 arent이었다 인용 부호

<a title="Xtra Pac Telekom web'n'walk Stick Basic für 9,95" href="someURL"> 
    Xtra Pac Telekom web'n'walk Stick Basic für 9,95</a> 

을 생산하고 있습니다.

이 항목은 csv에 기록 될 때만 나타납니다. cmd로 인쇄 할 때 따옴표가 없습니다.

아이디어가 있으십니까?

+0

로 예로 표시되는이 작업을 수행 항상 문자열에 대해 발생합니까? 게시 할 수있는 특정 테스트 케이스로 분류 할 수 있습니까? – idbrii

+0

정확한 출력물을 복사하여 붙여 넣었습니까? 당신은 몇몇 물건의 reprs와 다른 사람의 보통 str 버전을 인쇄하고 있습니까? –

답변

4

파이썬 사용할 수 있습니다 모두 하나의 ' 더블 "인용 부호로 따옴표. 그것은 일반적으로 작은 따옴표를 선택하지만, 인쇄되는 텍스트를 작은 따옴표가 포함되어있는 경우에 (큰 따옴표로 전환됩니다 무언가를 인쇄 할 때 문자열에서 인용) 탈출하는 것을 피하기 :

그래서 일반적으로, 그것은 [u'....']를 인쇄를하지만 때로는 당신은 ' 문자가 포함 된 텍스트를 가지고 있고 그것은 [u"...."] 인쇄

합니다. n csv에 추가로 복잡한 쓰기가 있습니다. 문자열이 '을 포함하는 csv에 기록 된 경우 그대로 씁니다. 그래서 [u'....'][u'....']로 기록됩니다.

큰 따옴표가 들어 있으면 (1) 모든 것이 큰 따옴표 안에 들어가고 (2) 큰 따옴표가 두 번 반복됩니다. 그래서 u["..."]"[u""...""]"로 기록됩니다. csv 데이터를 csv 라이브러리로 다시 읽으면이 데이터가 감지되고 제거되므로 문제가 발생하지 않습니다.

그래서 작은 따옴표 (파이썬이 큰 따옴표 사용)와 csv 따옴표 (큰 따옴표에는 적용되지만 작은 따옴표에는 적용되지 않음)가 포함 된 텍스트의 조합입니다. wikipedia page 더 자세히 인용 규칙을 설명 http://docs.python.org/library/csv.html

- - 이것은 CSV 라이브러리가 동작을 변경하기위한 다양한 옵션이 문제의 경우

여기 behavuour는 "Super, ""luxurious"" truck"

+0

이 아주 좋은 설명 주셔서 감사합니다 :) –

관련 문제