저는 xHamster를 긁어내는 스크립트를 작성하여 Python을 배우고 있습니다. 누구든지 사이트에 익숙하다면 특정 사용자의 동영상에 대한 모든 URL을 .txt 파일로 구체적으로 작성하려고합니다.Selenium Python (NSFW)을 사용하여 웹 페이지에서 URL 긁기
현재 특정 페이지에서 URL을 긁어 냈지만 여러 페이지가 있으며 페이지 수를 반복하는 데 어려움을 겪고 있습니다.
아래의 제 시도에서 나는 다음 페이지의 URL을 읽으려고 어디에서 코멘트했는지는 현재 None
입니다. 어떤 아이디어가 왜, 어떻게 해결할 수 있습니까?
현재 스크립트
#!/usr/bin/env python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")
driver = webdriver.Chrome(chrome_options=chrome_options)
username = **ANY_USERNAME**
##page = 1
url = "https://xhams***.com/user/video/" + username + "/new-1.html"
driver.implicitly_wait(10)
driver.get(url)
links = [];
links = driver.find_elements_by_class_name('hRotator')
#nextPage = driver.find_elements_by_class_name('last')
noOfLinks = len(links)
count = 0
file = open('x--' + username + '.txt','w')
while count < noOfLinks:
#print links[count].get_attribute('href')
file.write(links[count].get_attribute('href') + '\n');
count += 1
file.close()
driver.close()
페이지를 통해 반복에서 내 시도 :
#!/usr/bin/env python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")
driver = webdriver.Chrome(chrome_options=chrome_options)
username = **ANY_USERNAME**
##page = 1
url = "https://xhams***.com/user/video/" + username + "/new-1.html"
driver.implicitly_wait(10)
driver.get(url)
links = [];
links = driver.find_elements_by_class_name('hRotator')
#nextPage = driver.find_elements_by_class_name('colR')
## TRYING TO READ THE NEXT PAGE HERE
print driver.find_element_by_class_name('last').get_attribute('href')
noOfLinks = len(links)
count = 0
file = open('x--' + username + '.txt','w')
while count < noOfLinks:
#print links[count].get_attribute('href')
file.write(links[count].get_attribute('href') + '\n');
count += 1
file.close()
driver.close()
UPDATE :
나는 아래 필립 Oger 보낸의 답변을 사용하지만 수정 한 두 가지 방법 단일 페이지 검색 결과를 얻으려면 아래에서 :
def find_max_pagination(self):
start_url = 'https://www.xhamster.com/user/video/{}/new-1.html'.format(self.user)
r = requests.get(start_url)
tree = html.fromstring(r.content)
abc = tree.xpath('//div[@class="pager"]/table/tr/td/div/a')
if tree.xpath('//div[@class="pager"]/table/tr/td/div/a'):
self.max_page = max(
[int(x.text) for x in tree.xpath('//div[@class="pager"]/table/tr/td/div/a') if x.text not in [None, '...']]
)
else:
self.max_page = 1
return self.max_page
def generate_listing_urls(self):
if self.max_page == 1:
pages = [self.paginated_listing_page(str(page)) for page in range(0, 1)]
else:
pages = [self.paginated_listing_page(str(page)) for page in range(0, self.max_page)]
return pages
_______하지만 왜? –
가져 오기를해도 BeautifulSoup을 사용하는 것처럼 보이지 않습니다. – xbonez
@xbonez 아, 예, Selenium으로 전환하기 전에 BeautifulSoup을 처음 사용했습니다. 편집 됨. – kong88