사천대학교 행정학부 공식 홈페이지에서 모든 뉴스 문의를 받아보세요.
실험 과정
1. 크롤링 대상을 결정합니다.
2. 크롤링 규칙을 개발합니다.
3.
4. 크롤링된 데이터 가져오기
1. 크롤링 대상 결정
이번에 크롤링해야 할 대상은 쓰촨대학교 공공정책경영학부의 모든 뉴스 정보이므로 레이아웃 구조를 알아야 합니다.

여기서 우리는 모든 뉴스 정보를 캡처하고 싶어도 공식 웹사이트 홈페이지에서 직접 캡처할 수 없다는 사실을 발견했습니다. 일반 뉴스 열을 입력하려면 "더 보기"를 클릭해야 합니다.

특정 뉴스 열을 보았지만 이는 분명히 우리의 크롤링 요구 사항을 충족하지 않습니다. 현재 뉴스 웹 페이지는 뉴스의 시간, 제목, URL만 크롤링할 수 있지만 뉴스 내용은 크롤링할 수 없습니다. 따라서 뉴스의 특정 내용을 캡처하기 위해 뉴스 세부정보 페이지로 이동하려고 합니다.
2. 첫 번째 부분의 분석을 통해 뉴스의 특정 정보를 캡처하려면 뉴스 페이지를 클릭하여 뉴스 세부정보 페이지로 들어가 뉴스의 특정 내용을 파악해야 한다고 생각하겠습니다. 시도해 볼 만한 뉴스

뉴스 세부정보 페이지에서 직접 필요한 정보를 얻을 수 있다는 것을 알았습니다. 데이터: 제목, 시간, 내용.URL.
자, 이제 우리는 아이디어를 알았습니다. 뉴스를 잡는 방법, 모든 뉴스 콘텐츠를 크롤링하는 방법은 무엇입니까?
이것은 분명히 어렵지 않습니다.
생각을 정리한 후 확실한 캡처를 생각해 볼 수 있습니다. 가져오기 규칙:
3. '쓰기/디버깅' 크롤링 규칙
크롤러를 디버그하기 위해 세분성을 최대한 작게 하고
크롤러에서 구현하겠습니다. 다음 기능 포인트:2. 크롤링된 뉴스 링크를 통해 뉴스 세부정보를 입력하고 필요한 데이터(주로 뉴스 콘텐츠)를 크롤링합니다.
해당 지식 포인트는 다음과 같습니다.
1. 크롤링 페이지에서 기본 데이터를 가져옵니다.
3.Paste_Image.png3.1 한 페이지의 뉴스 열 아래에 있는 모든 뉴스 링크를 올라갑니다.
더 이상 고민하지 말고 지금 시작해 보세요.

소스를 분석하여 뉴스 칼럼의 코드에서 캡처된 데이터의 구조가

그런 다음 크롤러의 선택기를 (li:newsinfo_box_cf)에 배치한 다음 for 루프를 수행하면 됩니다. 코드 작성
import scrapyclass News2Spider(scrapy.Spider): name = "news_info_2" start_urls = ["http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=1", ]def parse(self, response):for href in response.xpath("//div[@class='newsinfo_box cf']"): url = response.urljoin(href.xpath("div[@class='news_c fr']/h3/a/@href").extract_first())
테스트하고 통과하세요!
Paste_Image.png
3.2 크롤링된 뉴스 링크를 통해 뉴스 세부정보를 입력하여 필요한 데이터(주로 뉴스 콘텐츠)를 크롤링합니다이제 URL 세트를 얻었으므로 이제 필요한 제목을 크롤링하기 위해 각 URL을 입력해야 합니다. 시간과 콘텐츠의 코드 구현도 매우 간단합니다. 원본 코드가 URL을 캡처할 때 URL을 입력하고 캡처하기만 하면 됩니다. 따라서 해당 데이터를 뉴스 세부정보 페이지에 입력하려면 다른 캡처 방법만 작성하고 scapy.request를 사용하여 호출하면 됩니다.
코드 작성
#进入新闻详情页的抓取方法 def parse_dir_contents(self, response):item = GgglxyItem()item['date'] = response.xpath("//div[@class='detail_zy_title']/p/text()").extract_first()item['href'] = responseitem['title'] = response.xpath("//div[@class='detail_zy_title']/h1/text()").extract_first() data = response.xpath("//div[@class='detail_zy_c pb30 mb30']")item['content'] = data[0].xpath('string(.)').extract()[0] yield item
원본 코드에 통합한 후 다음이 있습니다. 테스트 통과!
Paste_Image.png
import scrapyfrom ggglxy.items import GgglxyItemclass News2Spider(scrapy.Spider): name = "news_info_2" start_urls = ["http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=1", ]def parse(self, response):for href in response.xpath("//div[@class='newsinfo_box cf']"): url = response.urljoin(href.xpath("div[@class='news_c fr']/h3/a/@href").extract_first())#调用新闻抓取方法yield scrapy.Request(url, callback=self.parse_dir_contents)#进入新闻详情页的抓取方法 def parse_dir_contents(self, response): item = GgglxyItem() item['date'] = response.xpath("//div[@class='detail_zy_title']/p/text()").extract_first() item['href'] = response item['title'] = response.xpath("//div[@class='detail_zy_title']/h1/text()").extract_first() data = response.xpath("//div[@class='detail_zy_c pb30 mb30']") item['content'] = data[0].xpath('string(.)').extract()[0]yield item
원본 코드에 추가됨:
NEXT_PAGE_NUM = 1 NEXT_PAGE_NUM = NEXT_PAGE_NUM + 1if NEXT_PAGE_NUM<11:next_url = 'http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=%s' % NEXT_PAGE_NUM yield scrapy.Request(next_url, callback=self.parse)
抓到的数量为191,但是我们看官网发现有193条新闻,少了两条.
为啥呢?我们注意到log的error有两条:
定位问题:原来发现,学院的新闻栏目还有两条隐藏的二级栏目:
比如:

对应的URL为

URL都长的不一样,难怪抓不到了!
那么我们还得为这两条二级栏目的URL设定专门的规则,只需要加入判断是否为二级栏目:
if URL.find('type') != -1: yield scrapy.Request(URL, callback=self.parse)
组装原函数:
import scrapy from ggglxy.items import GgglxyItem NEXT_PAGE_NUM = 1class News2Spider(scrapy.Spider): name = "news_info_2" start_urls = ["http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=1", ]def parse(self, response):for href in response.xpath("//div[@class='newsinfo_box cf']"): URL = response.urljoin(href.xpath("div[@class='news_c fr']/h3/a/@href").extract_first())if URL.find('type') != -1:yield scrapy.Request(URL, callback=self.parse)yield scrapy.Request(URL, callback=self.parse_dir_contents) global NEXT_PAGE_NUM NEXT_PAGE_NUM = NEXT_PAGE_NUM + 1if NEXT_PAGE_NUM<11: next_url = 'http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=%s' % NEXT_PAGE_NUMyield scrapy.Request(next_url, callback=self.parse) def parse_dir_contents(self, response): item = GgglxyItem() item['date'] = response.xpath("//div[@class='detail_zy_title']/p/text()").extract_first() item['href'] = response item['title'] = response.xpath("//div[@class='detail_zy_title']/h1/text()").extract_first() data = response.xpath("//div[@class='detail_zy_c pb30 mb30']") item['content'] = data[0].xpath('string(.)').extract()[0] yield item
测试:

我们发现,抓取的数据由以前的193条增加到了238条,log里面也没有error了,说明我们的抓取规则OK!
4.获得抓取数据
<code class="haxe"> scrapy crawl <span class="hljs-keyword">new<span class="hljs-type">s_info_2 -o <span class="hljs-number">0016.json</span></span></span></code><br/><br/>
위 내용은 Scrapy는 대학 뉴스 보도 사례를 포착합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구
