2011-03-31 7 views
0

파이썬 스콥을 사용하여 스파이더를 실행하고 있는데, 이는 http://www.amazon.co.uk/gp/product/B003ZDXHSG/ref=s9_simh_gw_p23_d0_i3?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=center-2&pf_rd_r=1NWN2VXCA63R7TDYC3KQ&pf_rd_t=101&pf_rd_p=467128533&pf_rd_i=468294과 같은 매개 변수 (예 : & 기호)가있는 페이지를 제외한 모든 페이지를 스크랩하고 있습니다. 정말 시간 내 주셔서 감사합니다 다음 SgmlLinkExtractor rule스크립트를 사용하여 매개 변수화 된 URL 스크랩

rules = (
     Rule(SgmlLinkExtractor(allow='[a-zA-Z0-9.:\/=_?&-]+$'), 
      'parse', 
      follow=True, 
     ), 
) 

으로 CrawlSpider를 사용하고 사전에 감사 할 수있는 권한을 가지고 싶습니다 [scrapy] ERROR: xxx matching query does not exist.

오류 로그는 말한다.

+0

CrawlSpider의 콜백에 '구문 분석'이름을 지정할 수 없습니다. http://readthedocs.org/docs/scrapy/en/latest/topics/spiders.html#crawling-rules를 참조하십시오. – groovehunter

답변

0

귀하의 표현은 re.serach()까지의 URL과 일치합니다. r'regexpression'을 사용해 보았는데 python이 문자열을 원시 문자열로 처리합니까? 원시 문자열과 처리 문자열을 모두 사용하는 것처럼 보이지만, 파이썬이 정규 문자열을 원시 문자열로 취급하는 것이 가장 좋습니다.

>>> import re 
>>> url="http://rads.stackoverflow.com/amzn/click/B003ZDXHSG" 
>>> m = re.search(r'[a-zA-Z0-9.:\/=_?&-]+$', url) 
>>> m.group() 
'http://www.amazon.co.uk/gp/product/B003ZDXHSG/ref=s9_simh_gw_p23_d0_i3?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=center-2&pf_rd_r=1NWN2VXCA63R7TDYC3KQ&pf_rd_t=101&pf_rd_p=467128533&pf_rd_i=468294' 

>>> m = re.search('[a-zA-Z0-9.:\/=_?&-]+$', url) 
>>> m.group() 
'http://www.amazon.co.uk/gp/product/B003ZDXHSG/ref=s9_simh_gw_p23_d0_i3?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=center-2&pf_rd_r=1NWN2VXCA63R7TDYC3KQ&pf_rd_t=101&pf_rd_p=467128533&pf_rd_i=468294' 
0

내 대답에 응답하려면 내 모든 코드가 좋았습니다. 그것이 실패한 이유는 내가 치료법이라고 부르는 방식입니다. 작은 따옴표를 사용하고 있었기 때문에 &이 나옵니다. 큰 따옴표를 사용하여 거미를 호출하는 것이 해결책입니다.

관련 문제