(매우) 새로운 나는 더 많은 페이지에서 데이터를 긁어 노력했습니다/Scrapy와 동일한 웹 사이트의 섹션웹 사이트에서 여러 페이지를 긁어 모으는 방법? 파이썬과 일반</p> <p>에서 프로그래밍
내 코드가 작동하지만, 읽을이고 실용적이지
import scrapy
class SomeSpider(scrapy.Spider):
name = 'some'
allowed_domains = ['https://example.com']
start_urls = [
'https://example.com/Python/?k=books&p=1',
'https://example.com/Python/?k=books&p=2',
'https://example.com/Python/?k=books&p=3',
'https://example.com/Python/?k=tutorials&p=1',
'https://example.com/Python/?k=tutorials&p=2',
'https://example.com/Python/?k=tutorials&p=3',
]
def parse(self, response):
response.selector.remove_namespaces()
info1 = response.css("scrapedinfo1").extract()
info2 = response.css("scrapedinfo2").extract()
for item in zip(scrapedinfo1, scrapedinfo2):
scraped_info = {
'scrapedinfo1': item[0],
'scrapedinfo2': item[1]}
yield scraped_info
어떻게 향상시킬 수 있습니까?
나는
나는 동안, Scrapy 모든 카테고리와 페이지를 통해 그 일을 할 수있을 것이라고 그래서
categories = [books, tutorials, a, b, c, d, e, f]
in a range(1,3)
같은 뭔가가 필요 카테고리와 페이지의 일정 금액 내에서 검색하고 싶습니다 편집 및 다른 웹 사이트
어떤 아이디어가에 적응하기 쉬운 것을 환영
내가 시도 무엇:
01 23,516,categories = ["books", "tutorials"]
base = "https://example.com/Python/?k={category}&p={index}"
def url_generator():
for category, index in itertools.product(categories, range(1, 4)):
yield base.format(category=category, index=index)
그러나 Scrapy 당신은 yield Request(url)
를 사용하여 시작에 URL을 생성하는 방법 start_requests()
을 사용할 수 있습니다
[scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min),
scraped 0 items (at 0 items/min)
사용하는 버튼입니다'{}'제대로 SO에 코드를 포맷합니다. – furas
'url_generator()'는 클래스 내부의 메소드이므로'self (self)'-'def url_generator (self) :'가 필요합니다. 카테고리'product (self.categories', ...)와 동일합니다. BTW :'base.format (category = category, index = index) '로 얻은 것을 보려면'print()'를 사용하십시오. – furas
치료법은 [start_requests] (https://doc.scrapy.org/en/latest/) 방법을 가지고 있습니다. topics/spiders.html # scrapy.spiders.Spider.start_requests) 시작시 URL을 생성합니다. 그리고'url'을 가진 문자열뿐만 아니라 Request (url = ...)도 얻어야합니다. – furas