html - 我如何使用之前通过 Selenium 的浏览器自动化获得的 BeautifulSoup 抓取 ebay 网页?
问题描述
我想刮ebay。在进行任何抓取之前,我想通过使用 selenium 自动点击所需的点击来自动搜索、过滤和排序 ebay 帖子。我已经设法(相对稳健地)到达我想要的页面,但是似乎存在(1)网页更改其代码和/或(2)转换到 BeautifulSoup 部分的问题。
(1): 有时,当我在浏览器上搜索 ebay 上的项目并检查网页时,描述页面上所有 ebay-articles 的未排序列表 (ul) 的类具有类名“ListInnerView”,但其他一些乘以它的“srp-results”。另外,好像很多class和id的名字从结构“lv(后跟一个字符串)”变成了“s-item__(后跟一个字符串)”,所以整个页面好像在某种程度上发生了变化。
(2):当我查看 BeautifulSoup 接收的 html 代码时(它应该请求 Selenium 最终得到的 url,这是特定的),类和 id 名称与我在 webdriver 中看到的不匹配。这是您在 (1) 中看到的名称的确切差异。
如果来自 webdriver 窗口的 html 代码与 BeautifulSoup 收到的不匹配,我不知道该怎么办。因为那时我无法在视觉上找到 BeautifulSoup 应该找到的元素。
我一直在网上搜索我的问题的解释/解决方案,但还没有找到,因此提出了这个问题。
这是我代码的重要部分(如果缺少信息,我也可以共享整个代码):
from bs4 import BeautifulSoup
import requests
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("https://www.ebay.de")
>a bunch of clicking, hovering and scrolling, that works<
soup = BeautifulSoup(driver.page_source, "html.parser")
>a bunch of finding elements, doesn't work; works on its own though, using specific set of class(id-names...
解决方案
推荐阅读
- reactjs - 有没有办法在 React-Native 中设置 TextInput 的最小长度?
- node.js - Discord 机器人无法添加大量角色......抱怨事件监听器
- r - 编写包装函数时如何在 R 中编写“参数描述”?
- c - 如何将一维数组分配给二维数组?
- sql-server - 不同电脑中不同sql server实例中相同数据的同一张表
- elasticsearch - 在同一台机器上运行两个不同的 ES 并相应地配置 kibana
- .net - 从 ResourceManager 继承并替换默认 ResourceManager
- reactjs - 根据状态值对按钮是否禁用反应测试用例
- mysql - 示例数据库查询失败;你能帮我解决问题吗?
- c++ - 如何计算以下伪代码的封闭形式?