scrapy runspider 명령을 사용하여 동일한 구조의 동일한 도메인에서 ~ 10,000 개의 링크 집합을 긁어 내고 있습니다. 내 구문 분석 방법에서 페이지의 특정 요소를 평가하기 때문에 페이지의 다른 요소를 긁어내어 일부 페이지 (중요도 40 % ~ 50 % 페이지) 사이가 무작위로 크롤링되지만 스크랩되지는 않습니다. 그러나 일부 이유 (이 이유에 대해서는 나중에 자세히 설명)에 따라 일부 요소가 잘못 평가되는 경우가 있습니다. 이 문제를 해결하려면이 URL에 대한 구문 분석 방법을 최대 5 회까지 반복해서 호출해야합니다. 5 회를 실행하면 페이지가 조건에 올바르게 응답 할 것으로 기대됩니다. 그렇지 않으면 요소가 진정으로 평가된다고 가정합니다. 잘못으로). 이 코드를 작성하는 방법 (아래의 부품 코드)?크롤링 크롤링 (스크래핑 없음)
위의 동작에 대한 가능한 이유 : 웹 링크의 유형이 www.example.com/search_term/이며 실제로 www.example.com에 "search_term"을 입력 한 후 실제로 동적으로 생성 된 페이지입니다. 그래서 내 추측에 따르면 Scrapy는 www.example.com/search_term/ 페이지가 완전히 생성되기 전에도 응답을받습니다. 어쩌면 이상적인 해결책은 웹 드라이브와 모든 것을 사용하는 것입니다. 그러나이 모든 단계는 나에게 너무 복잡 할 것입니다. 내가 95 % 긁어 모으는 한 행복합니다.
아래관련 코드 (모든 세부 사항을 떠나지 않고 가독성을 위해 소독) :
class mySpider(scrapy.Spider):
name = "spidername"
def start_requests(self):
urls = [url1, ... url10000]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse,headers={
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3"})
def parse(self, response):
if (value of particular_item in page == 10):
yield {'someitem':
response.xpath('/html/body/div').extract())}
else:
<<Once again call this parse fuction with the same url upto a maximum of 5 times - Need help in writing the code here>>
본질적으로 같은 다양한 가능한 쿼리의 결과를 검색하는 사이트의 목록 : – Scyber
이 ... (죄송합니다, 위의 완료
또는 당신은 당신이 웹 사이트에서 모든
div
의 압축을 풉니 다 다른 해결책을 시도 할 수 있습니다 검색어) ... ... 가능한 검색어는 다음과 같습니다. www.exapmle.com/abcd/ www.exapmle.com/shjk/ www.exapmle.com/dued/ 따라서 동일한 구조입니다. 다른 60 % 페이지를 긁어 낸 성공은 xpath가 정확하다는 증거입니다. 또한 다른 실행에서 서로 다른 링크가 누락 되어도 반드시 동일한 링크가 누락되지는 않습니다. 때로는 www.exapmle.com/shjk/을 놓친 경우가 있습니다. 때로는 긁힐 수도 있습니다. – Scyber이 경우'response's를 로그 파일에 로깅하여 예상 한 것과 같은 결과를 얻는 지 확인하십시오. 서버가 요청 양을 제한하고 검색 결과 대신 오류 메시지가 표시 될 수 있습니다. – GHajba