【问题标题】:Scraping infinite scrolling pages with load more button using Selenium使用 Selenium 使用加载更多按钮抓取无限滚动页面
【发布时间】:2021-04-04 13:10:37
【问题描述】:

我试图通过网络抓取来获取所有项目标题和创建者姓名,并且大部分都可以正常工作,但是当我尝试使用“加载更多”按钮抓取无限滚动页面时,我得到了一个“TimeoutException:消息:”。请让我知道什么是错的以及我需要纠正什么。谢谢

下面是当前使用的代码:

from bs4 import BeautifulSoup
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome('/usr/local/bin/chromedriver')
driver.get("https://www.kickstarter.com/discover/advanced?sort=newest&seed=2695789&page=1/")

button = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR,'bttn keyboard-focusable bttn-medium bttn-primary theme--create fill-bttn-icon hover-fill-bttn-icon')))
button.click()

names=[]
creators=[] 
soup = BeautifulSoup(driver.page_source)
for a in soup.findAll('div',{'class':'js-react-proj-card grid-col-12 grid-col-6-sm grid-col-4-lg'}):
    name=a.find('div', attrs={'class':'clamp-5 navy-500 mb3 hover-target'})
    creator=a.find('div', attrs={'class':'type-13 flex'})
    names.append(name.h3.text) 
    creators.append(creator.text)

df = pd.DataFrame({'Name':names,'Creator':creators}) 

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

    您确实不需要使用Beautiful Soupselenium。去requests 库,它很容易获取它所有的麻烦。

    import requests
    import json
    records = []
    for i in range(5):
        req = requests.get('https://www.kickstarter.com/discover/advanced?google_chrome_workaround&woe_id=0&sort=newest&seed=2695910&page='+str(i),
                           headers={'Accept': 'application/json',
        'Content-Type': 'application/json'})
        if(req.status_code == 200):
            josn2 = req.json()
            projects = josn2.get("projects") 
            for i in range(len(projects)):
                print("Project Name - " + projects[i]['name'],end='          Created By - ')
                print(projects[i]['creator'].get('name'))
    
            print("----------------")
    

    输出:

    您可以在 loadmore 按钮加载内容时向下滚动到页面,在 for 循环中放置这么多的计数,您将获得所有内容。

    【讨论】:

      猜你喜欢
      • 2018-04-16
      • 2018-07-06
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2019-09-30
      • 2020-12-18
      • 2023-03-08
      相关资源
      最近更新 更多