我正在尝试从类似于https://www.newsweek.pl/nwpl_2018002_20181231
的页面上抓取内容。它在页面底部具有“更多”(pl。Więcej)按钮,该按钮可动态加载下一篇文章。最好是我想用Scrapy来完成任务,因为我的其他蜘蛛都使用它,但是首先我需要所有文章的url。因此,我尝试使用Selenium来click()
使用此按钮,如下所示:
def parse_issue(self, response):
self.logger.info('Parse function called parse_issue on {}'.format(response.url))
self.driver.get(response.url)
while True:
try:
more_button = self.driver.find_element_by_xpath('//div[@class="showMoreBtn"]')
time.sleep(2)
more_button.click()
time.sleep(5)
print('clicked.')
except Exception as e:
print(e)
break
articles_elements = self.driver.find_elements_by_xpath('.//div[@class="pure-u-1-1 pure-u-md-1-4 smallItem"]/a')
articles_url = [element.get_attribute("href") for element in articles_elements]
print(articles_url, response.url)
不幸的是,结果是我只获得页面源中已有文章的URL。有人可以建议我我在做什么错吗?
答案 0 :(得分:0)
点击更多按钮,网站发出一个请求,您可以通过在浏览器控制台中检查网络来跟踪。您需要编写rule
,这将从分页中提取所有链接,并且此rule
的回调将指向parse
答案 1 :(得分:0)
您需要更改逻辑。在运行无限循环并加载页面以获取元素值时。
WebDriverWait
()和element_to_be_clickable
()单击按钮。WebDriverWait
()和visibility_of_all_elements_located
()以获取所有元素。list
之前声明while loop
,然后单击More button
并继续检查列表中是否已存在项目 ,否则追加进入列表。代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.newsweek.pl/nwpl_2018002_20181231")
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button.cmp-button_button.cmp-intro_acceptAll"))).click()
articles_url=[]
while True:
try:
articles_elements=WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"a.elemRelative")))
for element in articles_elements:
if element.get_attribute("href") in articles_url:
continue
else:
articles_url.append(element.get_attribute("href"))
#Click Show More Button
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='showMoreBtn']"))).click()
time.sleep(2)
except Exception as e:
print(e)
break
print(articles_url)
print(len(articles_url))
控制台上的输出:
['https://www.newsweek.pl/dariusz-cwiklak-kosciol-i-rzad-szczuja-seksem-felieton/8cljc0t', 'https://www.newsweek.pl/tomasz-lis-kosciol-i-panstwo-pis-felieton/jj6jnh1', 'https://www.newsweek.pl/marcin-marczak-testuje-samochody/qbv7f1m', 'https://www.newsweek.pl/biznes/marcin-marczak-testuje-samochody/q7g4gn2', 'https://www.newsweek.pl/notowania-rafal-bohenek-i-martyna-wojciechowska/61b04bd', 'https://www.newsweek.pl/krzysztof-materna-rzad-i-kosciol-drza-przed-seksem-felieton/59s9cvz', 'https://www.newsweek.pl/wydarzenie-tygodnia-zamachy-terrorystyczne-w-nowej-zelandii/bjy6wjz', 'https://www.newsweek.pl/henryk-sawka-episkopat-i-pedofilia-rysunek/rft1lz7', 'https://www.newsweek.pl/kartka-z-kalendarza-slowo-ok-debiutuje-w-prasie/gge77hw', 'https://www.newsweek.pl/z-bliska-wydra-olbrzymia-i-czapla-czarnobrzucha-zobacz-zdjecie/xqpy3hj', 'https://www.newsweek.pl/zbigniew-holdys-sedziowie-przysiegli-i-glosne-zbrodnie-felieton/z7tjc4x', 'https://www.newsweek.pl/marcin-meller-walka-ze-strachem-przed-homopropaganda-felieton/63t1d5m', 'https://www.newsweek.pl/biznes/gadzety-sluchawki-do-ucha-bez-kabli-nowe-technologie/91kjww0', 'https://www.newsweek.pl/gadzety-sluchawki-do-ucha-bez-kabli-nowe-technologie/lybxzqr', 'https://www.newsweek.pl/pis-straszy-osobami-lgbt-tak-partia-chce-wygrac-wybory/1ksj5s9', 'https://www.newsweek.pl/agata-bielik-robson-o-tym-dlaczego-prawica-boi-sie-seksu-wywiad/n30lmzt', 'https://www.newsweek.pl/polskie-nastolatki-i-seks-jak-strasza-nim-dorosli/mdey5s5', 'https://www.newsweek.pl/jacek-saryusz-wolski-sylwetka-polityka-i-znawcy-ue/lkkt1ed', 'https://www.newsweek.pl/madeleine-albright-o-przyszlosci-usa-i-trumpie-wywiad/66bffm3', 'https://www.newsweek.pl/polska/spoleczenstwo/slawomir-swierzynski-polityczne-ambicje-lidera-bayer-full/0nmhzme', 'https://www.newsweek.pl/wiedza/psychologia/psychologia-zlosc-jak-opowiadac-o-niej-dzieciom/r4k75fb', 'https://www.newsweek.pl/polska/spoleczenstwo/uprzedzenia-polakow-zalezne-od-pogladow-politycznych/v2724h3', 'https://www.newsweek.pl/wiedza/psychologia/psychologia-agnieszka-stein-jak-rozmawiac-z-dziecmi-o-seksie/jkt2yj6', 'https://www.newsweek.pl/wiedza/psychologia/michal-czernecki-o-zaufaniu-relacjach-i-swojej-ksiazce-wywiad/r711jgv', 'https://www.newsweek.pl/wiedza/historia/harry-kessler-sylwetka-niemieckiego-zolnierza-i-dyplomaty/j4h7yl7', 'https://www.newsweek.pl/wiedza/psychologia/psychologia-po-co-nam-wstyd-emocje-ochronne/5zjh7lg', 'https://www.newsweek.pl/swiat/real-madryt-tajemnice-najslynniejszego-klubu-pilkarskiego/0p9mz56', 'https://www.newsweek.pl/swiat/brexit-rozbije-jednosc-ue-tego-chcieliby-putin-i-murdoch/5b6pem5', 'https://www.newsweek.pl/swiat/bernie-sanders-pierwszy-socjalista-ameryki-i-kandydat-na-prezydenta/7th7vd1', 'https://www.newsweek.pl/wiedza/nauka/wyscig-plemnikow-jak-rajd-paryz-dakar-nowe-odkrycia-naukowcow/s0s996b', 'https://www.newsweek.pl/biznes/zakaz-handlu-w-niedziele-polacy-maja-dosc-czy-rzad-zniesie-zakaz/zyl36b1', 'https://www.newsweek.pl/zakaz-handlu-w-niedziele-polacy-maja-dosc-czy-rzad-zniesie-zakaz/yz7dzzm', 'https://www.newsweek.pl/gospodarka-i-obietnice-wyborcze-pis-kto-za-to-wszystko-zaplaci/r87v3kn', 'https://www.newsweek.pl/biznes/gospodarka-i-obietnice-wyborcze-pis-kto-za-to-wszystko-zaplaci/8xrz977', 'https://www.newsweek.pl/kultura/magdalena-i-borys-lankoszowie-o-filmie-ciemno-prawie-noc-wywiad/fjqj597', 'https://www.newsweek.pl/kultura/japonia-i-rodzina-w-filmie-zlodziejaszki-hirokazu-koreedy/r7kmsyn', 'https://www.newsweek.pl/wiedza/nauka/najstarsze-tatuaze-swiata-wielka-moc-kaktusowej-igly/pvppbzw', 'https://www.newsweek.pl/kultura/serhij-zadan-o-konformizmie-w-nowej-powiesci-recenzja/ntgrnc3', 'https://www.newsweek.pl/kultura/ellen-page-o-nowej-roli-w-serialu-hollywood-i-sytuacji-osob-lgbt/sp9zy0n', 'https://www.newsweek.pl/kultura/love-death-robots-nowy-serial-netflixa-o-przyszlosci/54bjyv6', 'https://www.newsweek.pl/kultura/grzyby-i-ludzie-czyli-nasladowanie-natury-recenzja-wystawy/v2bnhyv', 'https://www.newsweek.pl/kultura/powrot-the-cinematic-orchestra-na-bardzo-udanej-plycie-recenzja/c0pbept', 'https://www.newsweek.pl/kultura/ola-bilinska-i-konrad-kucz-razem-na-nowej-plycie-recenzja/7efdxdn', 'https://www.newsweek.pl/kultura/american-dream-po-polsku-w-ksiazce-doroty-malesy-recenzja/bv2d8lb', 'https://www.newsweek.pl/kultura/spektakl-nogi-syreny-to-znakomity-kabaret-recenzja/p002s9b', 'https://www.newsweek.pl/kultura/starosc-tez-radosc-recenzja-ksiazki-nasze-dusze-noca/sj0de13', 'https://www.newsweek.pl/wiedza/psychologia/psychologia-milosc-zlapana-w-pulapke-jak-dawac-przyklad/mq55r7p', 'https://www.newsweek.pl/opinie/tomasz-lis-kosciol-i-panstwo-pis-felieton/wgbkt0m']
48