Python scrapy,중국어 웹 소설 차 트 오 르 기
차 트 소설의 저자,제목,분류 및 완결 또는 연재
프로젝트 분석
목표 url:"https://www.qidian.com/rank/hotsales?style=1&page=1"
콘 솔 검색 을 통 해 해당 정 보 는 html 정적 웹 페이지 에 존재 하기 때문에 이번 파충류 의 난이 도 는 비교적 낮다.
콘 솔 을 통 해 관찰 한 결과 필요 한 내용 은 모두 li 목록 에 있 고 모든 목록 은 책의 내용 을 대표 하 는 것 으로 나 타 났 다.
li 에서 필요 한 내용 찾기
두 번 째 페이지 의 url 을 찾 습 니 다.
“https://www.qidian.com/rank/hotsales?style=1&page=1”
“https://www.qidian.com/rank/hotsales?style=1&page=2”
비교 찾기 페이지 수 변화
scrapy 프로그램 을 시작 합 니 다.
프로그램 작성
프로젝트 를 만 드 는 것 은 너무 간단 해서 말 하지 않 겠 습 니 다.
1.item 작성(데이터 저장)
import scrapy
class QidianHotItem(scrapy.Item):
name = scrapy.Field() #
author = scrapy.Field() #
type = scrapy.Field() #
form= scrapy.Field() #
2.spider(데이터 캡 처(핵심 코드)작성)
#coding:utf-8
from scrapy import Request
from scrapy.spiders import Spider
from ..items import QidianHotItem
#
class HotSalesSpider(Spider):# spider
name = "hot" #
qidian_header={"user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"} # header
current_page = 1 #
def start_requests(self): #
url="https://www.qidian.com/rank/hotsales?style=1&page=1"
yield Request(url,headers=self.qidian_header,callback=self.hot_parse)
#Request
#url: url
#header: ( )
#callback: ( parse)
def hot_parse(self, response):#
#xpath
list_selector=response.xpath("//div[@class='book-mid-info']")
#
for one_selector in list_selector:
#
name=one_selector.xpath("h4/a/text()").extract()[0]
#
author=one_selector.xpath("p[1]/a[1]/text()").extract()[0]
#
type=one_selector.xpath("p[1]/a[2]/text()").extract()[0]
#
form=one_selector.xpath("p[1]/span/text()").extract()[0]
item = QidianHotItem()
# ,
item['name'] = name
item['author'] = author
item['type'] = type
item['form'] = form
yield item #
# URL, request
self.current_page += 1
if self.current_page <= 10:# 10
next_url = "https://www.qidian.com/rank/hotsales?style=1&page="+str(self.current_page)
yield Request(url=next_url,headers=self.qidian_header,callback=self.hot_parse)
def css_parse(self,response):
#css
list_selector = response.css("[class='book-mid-info']")
for one_selector in list_selector:
#
name = one_selector.css("h4>a::text").extract()[0]
#
author = one_selector.css(".author a::text").extract()[0]
#
type = one_selector.css(".author a::text").extract()[1]
#
form = one_selector.css(".author span::text").extract()[0]
#
item=QidianHotItem()
item['name']=name
item['author'] = author
item['type'] = type
item['form'] = form
yield item
3.start.py(명령 행 대신)파충류 프로젝트 폴 더 에 start.py 를 만 듭 니 다.
from scrapy import cmdline
# cmd
cmdline.execute("scrapy crawl hot -o hot.csv" .split())
# csv
비슷 한 과정 이 나타 나 는 것 은 기어 오 르 는 성공 을 대표 한다.hot.csv
총결산
이번 파충류 의 내용 은 매우 간단 합 니 다.spider 와 item 만 사 용 했 기 때 문 입 니 다.이것 은 거의 모든 scrapy 가 호출 해 야 하 는 파일 입 니 다.후기 에는 middlewarse.py,pipelines.py,setting.py 가 작성 하고 설정 해 야 하 며 자바 script 과 json 에서 데 이 터 를 추출 하 는 것 이 어렵 습 니 다.
여기 서 Python scrapy 가 중국어 사이트 소설 차 트 에서 오 르 는 것 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Python 이 중국어 사이트 에서 오 르 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.