파충류에서 데이터 세척을 진행하다
2587 단어 파충류
import scrapy
from scrapy import Request
from scrpy_item.items import CountryItem,CountryItemLoader
class CitySpider(scrapy.Spider):
name = 'city'
allowed_domains = ['example.com']
def __init__(self):
self.urls = ['http://example.webscraping.com/places/default/view/China-47']
def start_requests(self):
for url_str in self.urls:
yield Request(url_str,callback=self.parse,dont_filter=True)
def parse(self, response):
item = CountryItemLoader(item=CountryItem(),response=response)
#
item.add_css('title','tr#places_country__row td.w2p_fw::text')
#item.add_xpath
item.add_css('population','tr#places_population__row td.w2p_fw::text')
item.add_css('capital','tr#places_capital__row td.w2p_fw::text')
return item.load_item()
청소는items에서 진행
import scrapy
from scrapy import Field
from scrapy.loader import ItemLoader
from scrapy.loader.processors import MapCompose,TakeFirst,Join
def str_convert(value):
return 'country_' + value
def get_nums(value):
return value.replace(',','')
def str_capital(value):
return 'capital_' + value
class CountryItemLoader(ItemLoader):
# ,TakeFirst , extract_fitst()
default_output_processor = TakeFirst()
class CountryItem(scrapy.Item):
# , str_convert,
title = Field(input_processor = MapCompose(str_convert),)
population = Field(input_processor=MapCompose(get_nums),)
capital = Field(input_processor=MapCompose(str_capital),)
다시 파이프에서 출력해서 결과를 볼 수 있어요.
class ScrpyItemPipeline(object):
def process_item(self, item, spider):
print('item name is ::',item['title'])
print('item content is :',item['population'])
print('item capital is :',item['capital'])
return item
실행 결과는 다음과 같습니다.
item name is :: country_China
item content is : 1330044000
item capital is : capital_Beijing
{'capital': 'capital_Beijing','population': '1330044000', 'title': 'country_China'}
이상은 scrapy에서 데이터를 세척하는 과정으로 대량의 필드에 대해 분석할 때 페이지를 세척할 때보다 훨씬 좋고 코드가 번잡하지 않게 활용할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python은 어떻게 파충류의 효율을 향상시킬 것인가단일 스레드 + 멀티태스킹 비동기 협동 협정 함수(특수 함수)를 정의할 때 async 수식을 사용합니다. 함수 호출 후 내부 문장은 즉시 실행되지 않고 협동 대상으로 되돌아옵니다. 퀘스트 대상 작업 대상 = 고급 협...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.