(7) selenium 모 의 브 라 우 저 를 통 해 JS 동적 콘 텐 츠 를 추출 합 니 다.
왜 이렇게 기어 오 르 는 지 JS 동적 콘 텐 츠 를 보 세 요. selenium 이 브 라 우 저의 행동 을 모방 할 수 있 으 니 이 라 이브 러 리 로 웹 페이지 를 찾 는 것 도 간단 할 것 입 니 다.단점 은 아 날로 그 브 라 우 저 행동 인 만큼 제 이 슨 으로 직접 요청 하 는 것 보다 속도 가 훨씬 느리다 는 것 이다. 그러면 우 리 는 기어 오 르 기 코드 를 쓸 수 있다.여 기 는 css selecter 로 위 치 를 정 합 니 다.
>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.get('http://www.toutiao.com/')
>>> for i in driver.find_elements_by_css_selector('#carouselList > ul > li> a > img'):
print(i.get_attribute("src"))
http://p1.pstatp.com/origin/18a1001128770b4c8365
http://p3.pstatp.com/origin/178100075f23a040ecb5
http://p1.pstatp.com/origin/18a300112cfd26c2c6df
http://p9.pstatp.com/origin/18a5001110bbcae17326
http://p3.pstatp.com/origin/1781000760173eb00269
http://p3.pstatp.com/origin/17810007602775eb7d1d
>>> for i in driver.find_elements_by_css_selector('#carouselList > ul > li> a'):
print(i.get_attribute("href"))
http://www.toutiao.com/group/6399973251997040897/
http://www.toutiao.com/group/6399911996251357442/
http://www.toutiao.com/group/6400082968694440194/
http://www.toutiao.com/group/6399868819300778242/
http://www.toutiao.com/group/6400084033762705666/
http://www.toutiao.com/group/6399915188623343874/
>>> for i in driver.find_elements_by_css_selector('#carouselList > ul > li > a > p'):
print(i.text)
37
>>> len(driver.find_elements_by_css_selector('#carouselList > ul > li > a > p'))
6
>>>
문제 가 생 겼 습 니 다. 그림 과 뉴스의 url 링크 는 성공 적 으로 찾 았 지만 제목 title 6 개 는 하나 밖 에 표시 되 지 않 았 습 니 다.몇 가지 포 지 셔 닝 방법 을 시 도 했 지만 결 과 는 여전히 같다.pagesource 가 Beautiful Soup 에 들 어가 면 괜 찮 습 니 다.시간 이 있 으 면 이어서 무슨 문제 가 생 겼 는 지 연구 해라.
2. 오늘 의 톱 미녀 사진 을 획득
이어서 상편 과 같이 오늘 의 톱 사진 을 얻 으 러 왔 다.
>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.get('http://www.toutiao.com/search/?keyword=%E7%BE%8E%E5%A5%B3')
>>> a = driver.find_elements_by_class_name('J_title')
>>> len(a)
20
>>> for i in a:
print(i.text)
, ,
,
:
,
——
:
17
「 」
: , ?
:
T :90
,
>>> b =driver.find_elements_by_class_name('img-wrap')
>>> for i in b:
print(i.get_attribute('href'))
http://www.toutiao.com/group/6399967413135884545/
http://www.toutiao.com/group/6399875937064272129/
http://www.toutiao.com/group/6399511749808095746/
http://www.toutiao.com/group/6399741308898132225/
http://www.toutiao.com/group/6400243707849244930/
http://www.toutiao.com/group/6400238927080390914/
http://www.toutiao.com/group/6399718234816741633/
http://www.toutiao.com/group/6399832980781629697/
http://www.toutiao.com/group/6399866594214904066/
http://www.toutiao.com/group/6399716443810496769/
http://www.toutiao.com/group/6400085128462516482/
http://www.toutiao.com/group/6400180716161253633/
http://www.toutiao.com/group/6399949700431003905/
http://www.toutiao.com/group/6399936693873737986/
http://www.toutiao.com/group/6399757089493025025/
http://www.toutiao.com/group/6399803425404436738/
http://www.toutiao.com/group/6399716046782431489/
http://www.toutiao.com/group/6399712965301715202/
http://www.toutiao.com/group/6399724047525150977/
http://www.toutiao.com/group/6399723310598799618/
그림 내용 의 링크 는 쉽게 얻 을 수 있 습 니 다. 이어서 우 리 는 모든 웹 페이지 에 들 어가 서 안의 그림 다운로드 링크 를 얻 으 면 됩 니 다.셀 레 니 엄 으로 모든 홈 페이지 에 들 어가 그림 을 다운로드 하면 효율 이 느 린 것 이 분명 하 다. 차라리 requests 를 사용 하 자.이 작은 일 은 여기에서 더 이상 반복 되 지 않 는 다. 앞에서 우 리 는 정적 홈 페이지 를 오 르 는 것 은 이미 많은 것 을 했다.우 리 는 이제 다음 의 또 다른 중요 한 문 제 를 연구 하 는데, 바로 어떻게 더 많은 이미지 웹 링크 를 얻 느 냐 하 는 것 이다.이 사이트 에 서 는 브 라 우 저 를 끝까지 끌 어 당 겨 야 더 많은 그림 을 표시 할 수 있다.어떻게
#
>>> driver.execute_script("window.scrollBy(0,document.body.scrollTop=0)","")
#
>>> driver.execute_script("window.scrollBy(0,document.body.scrollHeight)","")
>>> driver.execute_script("window.scrollBy(0,document.body.scrollHeight=10000)","")
>>> driver.execute_script("window.scrollBy(0,document.body.scrollTop)","")
>>> import time
>>> time.sleep(3)
>>> b = driver.find_elements_by_class_name('J_title')
>>> len(b)
120
이상 은 execute - script 을 통 해 js 스 크 립 트 작업 을 수행 합 니 다.Action Chains 를 통 해 마우스 조작 을 모 의 할 수도 있다.그러면 드 롭 다운 할 때마다 20 개의 사진 주 소 를 얻 을 수 있다.그래서 전체적인 생각 은 다음 과 같다.
(1) selenium 아 날로 그 브 라 우 저 로 웹 페이지 에 로그 인
(2) 아 날로 그 브 라 우 저 에서 페이지 를 끝까지 끌 어 내리 고 더 많은 그림 주 소 를 계속 불 러 옵 니 다.
(3) selenium 에서 요 소 를 찾 아 제목 과 사진 주 소 를 찾 습 니 다.
(4) 각 그림 사이트 에 requests 요청 으로 모든 그림 다운로드 링크 추출
(5) 사진 다운로드
어렵 지 않 아 요. 코드 쓰 는 게 귀찮아 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.