gpt4 book ai didi

python - 使用 PhantomJS 和 Selenium 抓取网络数据

转载 作者:行者123 更新时间:2023-11-28 18:26:13 25 4
gpt4 key购买 nike

我正在使用 selenium 中的 Phantomjs 从代码段中给出的链接中抓取数据。在 phantomjs(web_element) 中使用 element.text 提取数据时,我在两者之间得到了一些空白值,就好像我使用 chromedriver 我能够抓取所有数据一样。

I can only run using headless browser since I am running it in AWS Linux server

我如何使用 phantomjs 抓取所有数据而不丢失。在这里期待一些帮助...在此先感谢您

下面是附加的片段

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.common.exceptions import NoSuchElementException
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 "
"(KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36")
driver = webdriver.PhantomJS(desired_capabilities = dcap,service_args=['--ignore-ssl-errors=true', '--load-images=false'])
driver.get("http://www.myntra.com/Dresses/Casual-Collection/Casual-Collection-by-Debenhams-Purple-Floral-Print-Maxi-Dress/348207/buy")
driver.implicitly_wait(5)
try:
driver.find_element_by_class_name("size-buttons-show-size-chart").click()
driver.implicitly_wait(10)
div_s = driver.find_elements_by_class_name("size-chart-cell")
# div_s = driver.find_elements_by_xpath("""//*[@id="mountRoot"]/div/div/div/div[3]/div/div[2]/div[1]/table/tbody/tr""")
size_data = ''
for s in div_s:
print str(s.text)
except NoSuchElementException:
print "NoSuchElementException"

Modified output:

Size XS S M L XL XXL 3XL
Brand Size UK10 UK12 UK14 UK16 UK18 UK20 UK22
Hips (INCHES) 36 38 40 42.5 45.25 48 50.75
31 41.75 # most Element is missing/ not able to scrape ???
Bust (INCHES) 34.25 36.25 38 40 43.75 46.5 49.25

Actual table is : Size Chart

最佳答案

有趣的问题。在这种情况下,使用 textContent 实际上是可行的:

for s in div_s:
print(str(s.get_attribute("textContent")))

.texttextContent 和其他属性之间的区别在这里得到了完美的描述:

请注意,调用 implicitly_wait() 没有意义多次 - 它不作为 time.sleep() - 意思是,它不会立即等待一定时间 - 相反,它只会指示驱动程序设置“隐式等待”到指定的秒数:

An implicit wait is to tell WebDriver to poll the DOM for a certain amount of time when trying to find an element or elements if they are not immediately available.

在这种情况下更好的等待方式是使用 Explicit Waits .

关于python - 使用 PhantomJS 和 Selenium 抓取网络数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41363685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com