希望提供帮助?以下是您的选择:","Crunchbase","关于我们","感谢大家的大力支持!","快速链接","联属会员计划","高级","ProxyScrape 高级试用","代理类型","代理国家","代理用例","重要","Cookie 政策","免责声明","隐私政策","条款和条件","社交媒体","在 Facebook 上","LinkedIn","推特","Quora","电报","不和谐音","\n © Copyright 2024 -Thib BV| Brugstraat 18 | 2812 Mechelen | Belgium | VAT BE 0749 716 760\n"]}
当今世界,每个人都在使用新技术。借助网络搜刮技术,您可以自动获取结构化数据。例如,您可以利用网络刮削技术:无限滚动(又称无尽滚动)是一种网页设计技术,网站通常将其与 AJAX 或 Javascript 结合使用。
当今世界,每个人都在使用新技术。借助网络搜刮技术,您可以自动获取结构化数据。例如,您可以使用网络搜索来:
无限滚动(也称无尽滚动)是一种网页设计技术,网站通常使用 AJAX 或Javascript在用户向下滚动到网页底部时动态加载额外内容。这种技术因其在社交媒体网站上的成功而广受欢迎。例如,Twitter 中的无限滚动就是通过异步加载实现的。Twitter在页面加载后进行 AJAX 调用,以便在滚动时不断添加新内容。虽然无限滚动有很多优点,但不建议用于需要人们定位特定内容的目标导向型查找任务。
让我们先来了解一下扫描无限滚动页面的好处。
以下是刮取无限滚动页面的一些原因。
除了上述无限滚动页面的优点外,它也有一些缺点,比如: 1:
让我们来看看如何在以下步骤的帮助下使用 Python 浏览无限滚动页面。
您需要导入 Selenium 库。
fromseleniumimportwebdriver
fromselenium.webdriver.common.keysimportKeys
导入时间
在此,您必须选择要使用的浏览器。我们将选择 Chrome 浏览器,因为它比 Firefox 提供更多选项。
defget_selenium():
options= webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
return(driver)
上面提到的无头参数相当重要。在 Python 中无头运行时,Selenium 不会在新窗口中打开 Chrome 浏览器。不过,如果在刮擦时遇到问题,可以注释无头选项,查看 Chrome 浏览器中发生了什么以及页面上加载了什么。
我们可以省略两个标志,即忽略证书错误和隐身。
如果遇到验证码或 cookie 横幅阻止页面加载,可以点击 "确定 "并正常进入页面。但是,如果浏览器意外关闭,可以使用 time.sleep() 暂停代码,以便有充足的时间进行调试。
您需要检查页面的 HTML 结构以修复无限滚动问题,并按照以下步骤操作。
您可以参考下面的示例,以便更好地理解。
selenium = get_selenium()
selenium.get("your/url")
last_elem ='';
while True:
current_last_elem ="#my-div > ul > li:last-child"
scroll ="document.querySelector(\'"+ current_last_elem +"\').scrollIntoView();"
selenium.execute_script(scroll)
time.sleep(3)
如果(last_elem == current_elem)
断开
否则
last_elem = current_elem
在上述代码中,我们在 Python 中使用了 jQuery 和 Javascript。
给你
selenium.get("your/url.com/{0}".format(keyword))
"document.querySelector(\'" + .. + ").scrollIntoView();"
在此,您的格式必须正确,因此需要注意单引号、双引号和转义字符。
无限滚动时经常出现的一些问题如下:
可以在 Python 中触发一个 js 脚本,并得到一个列表。
例如,我们可以使用下面的代码来获取页面上所有图片的来源。
js_script='''\
var jslist = []
document.querySelectorAll('img').forEach(i => jslist.push(i.src));
返回 jslist;
'''
python_list= selenium.execute_script(js_script)
在上述代码中
对于 href 链接,我们也可以使用同样的方法:
之后,我们可以使用 selenium.execute_script() 运行脚本。
这就是我们如何使用 Python 浏览无限滚动页面。
我们知道,代理是第三方服务器,它充当请求资源的客户端与提供资源的服务器之间的中介。 如果想在 Selenium 和 Python 中使用代理,可以使用以下代码。
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=%s'% hostname +":"+port)
driver = webdriver.Chrome(chrome_options=chrome_options)
要处理无限滚动,可以使用 scroll-proxy,它支持在视图层次结构中以编程方式滚动可滚动视图。如果使用 npm,可以使用下面的命令安装 scroll-proxy。我们将使用 js 演示 scroll-proxy 的使用。
npm installscroll-proxy--save
安装 scroll-proxy 后,可以使用以下代码实例化一个 ScrollProxy 对象。
varmyScroll =new ScrollProxy();
您可以看到,我们没有向 ScrollProxy 构造函数传递任何参数,因为当用户滚动页面时,它将默认报告操作。
但是,如果要在用户滚动某些特定 HTML 元素时获取更新,则必须将其传递给构造函数。
varmyDiv =document.querySelector('.scrollable');
varmyDivScroll =newScrollProxy(myDiv);
以下是使用代理进行无限滚动搜索的一些原因。
我们讨论过,当用户不是在寻找特定信息时,无限滚动是首选。不断产生新内容的新闻网站和社交媒体可以从无限滚动中受益。另一方面,商业网页和电子商务网站并不适合无限滚动,因为用户寻求的是特定信息。此外,我们还讨论了使用 Selenium 扫描无限滚动页面的步骤。我们还可以使用旋转住宅代理来处理无限滚动,因为它们有助于避免验证码并过滤可疑的头请求。
希望你已经了解了如何使用 Python 抓取无限滚动页面。