ven*_*kat 5 python selenium web-crawler web-scraping python-3.x
大家好,我是 Selenium 和 Python 的新手。我刚刚抓取了pagalguy 网站。我知道如何向下滚动到页面底部,但我需要的是逐步向下滚动,以便 Selenium 单击所有“阅读更多”按钮,但我不知道如何像这样逐步向下滚动,所以我像下面这样对它进行了硬编码
browser.execute_script("window.scrollTo(0,300);")
browser.find_element_by_link_text("Read More...").click()
browser.execute_script("window.scrollTo(300,600);")
browser.find_element_by_link_text("Read More...").click()
browser.execute_script("window.scrollTo(600,900);")
browser.find_element_by_link_text("Read More...").click()
browser.execute_script("window.scrollTo(900,1200);")
browser.find_element_by_link_text("Read More...").click()
browser.execute_script("window.scrollTo(1200,1500);")
browser.find_element_by_link_text("Read More...").click()
browser.execute_script("window.scrollTo(1500,1800);")
browser.find_element_by_link_text("Read More...").click()
browser.execute_script("window.scrollTo(1800,2100);")
browser.find_element_by_link_text("Read More...").click()
browser.execute_script("window.scrollTo(2100,2500);")
browser.find_element_by_link_text("Read More...").click()
it goes on .......
Run Code Online (Sandbox Code Playgroud)
我尝试使用 while 循环自动执行它,但它导致了错误,上面的循环有效,但我希望它短且循环,以便我可以将它用于具有不同页面长度的所有其他页面。
initial_value = 0
next_value = 300
while next_value<300000:
browser.execute_script("window.scrollTo(initial_value,next_value);")
browser.find_element_by_link_text("Read More...").click()
initial_value=next_value
next_value+=300
Run Code Online (Sandbox Code Playgroud)
JavascriptException:消息:ReferenceError:initial_value 未定义
但我已经定义了值,我想我解释了我实际上想要做什么,我想自动向下滚动并单击所有阅读更多按钮,然后我将获得全文内容
Cha*_*rat 10
同意@Rahul Chawla 的回答。
但添加一处更改。你可以试试这个
driver = webdriver.Chrome()
read_mores = driver.find_elements_by_xpath('//a[text()="Read More..."]')
for read_more in read_mores:
driver.execute_script("arguments[0].scrollIntoView();", read_more)
driver.execute_script("$(arguments[0]).click();", read_more)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28430 次 |
| 最近记录: |