URL 목록을 가져 와서 크롤링하는 "Scrapy"패키지로 스파이더를 만들려고합니다. 나는 stackoverflow에 대한 답변을 검색했지만 문제를 해결할 수있는 것을 찾을 수 없습니다. 에서Python - Scrapy - URL 목록을 가져와 크롤링하는 크롤러 만들기
- : 나는 인쇄 self.start_urls 동안 인쇄 다음과 같은 정보를 얻을
Spider = Try(urls = [r"https://www.example.com"]) process = CrawlerProcess({ 'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)' }) process.crawl(Spider) process.start()
:
class Try(scrapy.Spider): name = "Try" def __init__(self, *args, **kwargs): super(Try, self).__init__(*args, **kwargs) self.start_urls = kwargs.get("urls") print(self.start_urls) def start_requests(self): print(self.start_urls) for url in self.start_urls: yield Request(url , self.parse) def parse(self, response): d = response.xpath("//body").extract()
내가 거미를 크롤링 할 때 다음과 같이
내 스크립트입니다 화면에 인쇄 된 __init__ 기능은 다음과 같습니다. [r "https://www.example.com "] (거미에게 전달됨). 화면에 인쇄 된 start_requests 기능에
- 입니다 : 없음
가 왜 없음을 얻을 수 있습니까? 이 문제에 접근 할 수있는 또 다른 방법이 있습니까? 또는 거미의 수업에 실수가 있습니까?
주어진 도움을 주셔서 감사합니다! 내가
process.crawl(Try, urls=[r"https://www.example.com"])
을 실행하면 내가 예상대로
목록에 다른 이름을 사용하여 시작시 URL 유지 - 'self.start_urls'는'치료 '에서 사용되므로 제거 할 수 있습니다. 만약 당신이'self.start_urls'에'__init__'에 URL을 넣었다면 그것들을 사용할 것이고'start_requests'를 사용할 필요가 없을까요? – furas
'process.crawl'은'from_crawler'를 호출 할 때 매개 변수없이 새로운 Try 객체를 생성합니다. 치료 소스 코드의 크롤러 클래스를 참조하십시오. https://github.com/scrapy/scrapy/blob/master/scrapy/crawler.py#L101-L102 – matiskay