python - 我正在尝试从此链接中刮取产品的颜色和型号
问题描述
我在这里遇到错误,我无法抓取数据。
基本网址 = https://www.mobilephonesdirect.co.uk/brands/apple?monthly_cost=40
产品网址 = https://www.mobilephonesdirect.co.uk/handset/apple/iphone-12
我想从所有产品链接中获取内存详细信息。
from selenium import webdriver
from bs4 import BeautifulSoup
import xlwt
import time
driver = webdriver.Chrome()
driver.get('https://www.mobilephonesdirect.co.uk/brands')
time.sleep(5)
cookies = driver.find_element_by_xpath("//button[contains(text(),'Accept')]")
time.sleep(5)
cookies.click()
time.sleep(5)
print("cookies accepted")
time.sleep(5)
driver.maximize_window()
print("window maximized")
click = driver.find_element_by_css_selector('.u-grid--3--bp-medium:nth-child(1) .u-ai--center').click()
time.sleep(5)
print("clicked apple phones")
time.sleep(5)
#creating soup obj for the products
content = driver.page_source
soup = BeautifulSoup(content,'html.parser')
#print(soup.prettify())
#creating obj for apple product link
print(driver.current_url)
links = soup.find_all('div',{'class':'o-flex-container u-px--xsmall u-pt--xsmall'})
list_links = []
for link in links:
anchor = link.find('a')
url = 'https://www.mobilephonesdirect.co.uk' + anchor["href"]
list_links.append(url)
for urls in list_links:
driver.get(urls)
#print(soup1.prettify())
print(driver.current_url)
source = driver.page_source
soup1 = BeautifulSoup(source,'html.parser')
product_memory = soup1.find('div',{'class':'u-fz--title-small u-fw--400'})
print(product_memory.text)
解决方案
问题是它在一个地方运行得有点太快了。
在这一行之后:
driver.get(urls)
把这个
time.sleep(5)
然后它将正常工作。
我对这些库并不太熟悉,但我认为发生的事情是该driver.get(urls)
行告诉 webdriver 加载该页面,但下一行source = driver.page_source
立即运行,因此该页面尚未加载。所以还没有源,因为页面还没有完成加载。暂停该暂停为页面加载提供了足够的时间。
推荐阅读
- android - 使用 Xamarin 在 Android 上的 FIDO2
- pandas - Pandas 系列 - 添加单个值和删除特定行的简单方法
- r - R:按整数的第一位过滤
- python - 使用基本 CGI 回复 twilio 消息
- python - Python/Pandas:避免 for 循环,但在数据帧上使用条件进行查询
- twitter-bootstrap - 在将值作为参数传递给插件时将值传递给 ember.js 组件(例如 ember-bootstrap-modals-manager)
- r - 在 R 中抓取具有多个选项卡的网页 - 无法访问表格
- python - 错误:模块“pygame”没有“init”成员
- bash - 在 bash shell.sh 中循环
- hybris - Hybris - 客户支持管理员角色与客户支持管理员组