c\#유쿠 영화 정보 얻 기(2)
파충류 단계
페이지 불 러 오기
분석 데이터
데이터 저장
첫 번 째 문서 에 이 어 파충류 의 진급,이 글 은 주로 이전 편 에 대한 진급 이다.실 현 된 기능 은 주로 다음 과 같다.
1.영화 카 테 고리 리스트 에 올 라 가기
2.각 유형의 영화 정 보 를 순환 하고 각 유형의 정 보 를 페이지 별로 나 누 어 추출 합 니 다.
3.기어 오 른 데 이 터 를 데이터베이스 에 저장
영화 카 테 고리 목록
Chrome 브 라 우 저,F12 를 사용 하여 현재 위 치 를 찾 아 현재 위치 에 있 는 Xpath 를 얻 습 니 다.우리 가 필요 로 하 는 데 이 터 는 영화 의 분류 코드 와 영화 유형 이름 이다.
규칙 분석:
XPATH 경 로 는'//*[@id='filter Panel']/div/ul/li/a')
카 테 고리 인 코딩 은 A 탭 Href 경로 의 내용 입 니 다.캡 처 합 니 다.
카 테 고리 이름 은 A 태그 InnerTest 입 니 다.캡 처 합 니 다.
코드 예제
// web
private static readonly string _url = "http://list.youku.com/category/video/c_0.html";
/// <summary>
///
/// </summary>
public static List<VideoType> GetVideoTypes()
{
// web
var web = new HtmlWeb();
var doc = web.Load(_url);
// -
var allTypes = doc.DocumentNode.SelectNodes("//*[@id='filterPanel']/div/ul/li/a").ToList();
// 【 】
var typeResults = allTypes.Where((u, i) => { return i > 0; }).ToList();
var reList = new List<VideoType>();
foreach (var node in typeResults)
{
var href = node.Attributes["href"].Value;
reList.Add(new VideoType
{
Code = href.Substring(href.LastIndexOf("/") + 1, href.LastIndexOf(".") - href.LastIndexOf("/") - 1),
Name = node.InnerText
});
}
return reList;
}
2.각 유형의 총 페이지 수 를 추출 합 니 다.code 는 영화 카 테 고리 인 코딩 입 니 다.
페이지 규칙$"이전 장절"
페이지 규칙 에 따라 기어 오 르 기:
/// <summary>
///
/// </summary>
public static int GetPageCountByCode(string code)
{
var web = new HtmlWeb();
var doc = web.Load($"http://list.youku.com/category/show/[code].html");
//
var pageList = doc.DocumentNode.CssSelect(".yk-pages li").ToList();
//
var lastsecond = pageList[pageList.Count - 2];
return Convert.ToInt32(lastsecond.InnerText);
}
3.페이지 번호 에 따라 각 영화 유형의 내용 을 얻 을 수 있 습 니 다.페이지 규칙 에 따라 페이지 를 나 눈 후의 주 소 는?
code 는 인 코딩 pageIndex 를 몇 페이지 로 합 니까?
페이지 규칙:http://list.youku.com/category/show/[code].html
페이지 규칙 에 따라 기어 오 르 기:
/// <summary>
///
/// </summary>
public static List<VideoContent> GetContentsByCode(string code, int pageIndex)
{
var web = new HtmlWeb();
var doc = web.Load($"http://list.youku.com/category/show/[code]_s_1_d_1_p_{pageIndex}.html");
var returnLi = new List<VideoContent>();
var contents = doc.DocumentNode.CssSelect(".yk-col4").ToList();
foreach (var node in contents)
returnLi.Add(new VideoContent
{
PageIndex = pageIndex.ToString(),
Code = code,
Title = node.CssSelect(".info-list .title a").FirstOrDefault()?.InnerText,
Hits = node.CssSelect(".info-list li").LastOrDefault()?.InnerText,
Href = node.CssSelect(".info-list .title a").FirstOrDefault()?.Attributes["href"].Value,
ImgHref = node.CssSelect(".p-thumb img").FirstOrDefault()?.Attributes["Src"].Value
});
return returnLi;
}
4.테스트 기어 오 른 결과
/// <summary>
///
/// </summary>
public static void PrintContent()
{
var count = 0;
foreach (var node in GetVideoTypes())
{
var resultLi = new List<VideoContent>();
//
var pageCount = GetPageCountByCode(node.Code);
//
for (var i = 1; i <= pageCount; i++) resultLi.AddRange(GetContentsByCode(node.Code, i));
Console.WriteLine($" {node.Code} \t {pageCount} \t {resultLi.Count}");
count += resultLi.Count;
}
Console.WriteLine($" {count}");
}
코드 다운로드 주소:http://list.youku.com/category/show/[code]s_1_d_1_p{pageIndex}.html
이상 은 c\#유쿠 영화 정보 얻 기(2)의 상세 한 내용 입 니 다.c\#유쿠 영화 정보 얻 기 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.