Webscraping Selenium 和 PhantomJS 返回产品详细信息的文本
Webscraping Selenium and PhantomJS Returning text for product details
我是网络抓取的新手 python,我正在尝试使用 Selenium 和 phantomJS 检索网页的产品详细信息文本,因为此页面不显示呈现的 html当我使用 "driver.page_source" 时,我的代码是这样的:
url = 'https://www.jumbo.cl/frutas-y-verduras?page=1'
driver = webdriver.PhantomJS()
driver.get(url)
html = driver.page_source
不幸的是,这样做我检索了相同的源代码,但没有可视化呈现的格式
我的代码摘录return:
categoryId\":\"21\",\"productTitle\":\"Champiñón 200 g | Jumbo.cl\",\"metaTagDescription\":\"Encuentra Champiñón 200 g y la mejor variedad de Verduras en Jumbo.cl\",\"releaseDate\":\"2017-08-24T00:00:00\",\"clusterHighlights\":{\"325\":\"Dia de la fruta y verdura\",\"3554\":\"Vitrina 3554 limpia\",\"3862\":\"EXCLUSIVO 31082019\",\"3864\":\"DESPACHO 310819\"
目标代码的摘录(我可以将此代码可视化到 chrome 控制台,但是当我访问源代码时,页面 return 显示了上面的代码)。
<li class="shelf-item">
<div class="shelf-product-island">
包含每个产品详细信息值的容器在 class "shelf-item"
的列表中
您可以使用 chromedriver 代替 PhantomJS() 和以下代码:
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
def parse(url):
driver.get(url)
driver.implicitly_wait(10)
title_list = driver.find_elements_by_xpath('//a[@class="shelf-product-title"]/h2')
title_list_text = [t.get_attribute('textContent') for t in title_list]
return title_list_text
titles_list = parse("https://www.jumbo.cl/frutas-y-verduras?page=1")
print(titles_list)
但请注意,如果您想解析第二页和其他页面,则必须将第二页 url 传递给函数,例如:
titles_list = parse("https://www.jumbo.cl/frutas-y-verduras?page=2")
等等。或者在页面底部找到一个寻呼机按钮,点击它并重新解析另一个页面
我是网络抓取的新手 python,我正在尝试使用 Selenium 和 phantomJS 检索网页的产品详细信息文本,因为此页面不显示呈现的 html当我使用 "driver.page_source" 时,我的代码是这样的:
url = 'https://www.jumbo.cl/frutas-y-verduras?page=1'
driver = webdriver.PhantomJS()
driver.get(url)
html = driver.page_source
不幸的是,这样做我检索了相同的源代码,但没有可视化呈现的格式
我的代码摘录return:
categoryId\":\"21\",\"productTitle\":\"Champiñón 200 g | Jumbo.cl\",\"metaTagDescription\":\"Encuentra Champiñón 200 g y la mejor variedad de Verduras en Jumbo.cl\",\"releaseDate\":\"2017-08-24T00:00:00\",\"clusterHighlights\":{\"325\":\"Dia de la fruta y verdura\",\"3554\":\"Vitrina 3554 limpia\",\"3862\":\"EXCLUSIVO 31082019\",\"3864\":\"DESPACHO 310819\"
目标代码的摘录(我可以将此代码可视化到 chrome 控制台,但是当我访问源代码时,页面 return 显示了上面的代码)。
<li class="shelf-item">
<div class="shelf-product-island">
包含每个产品详细信息值的容器在 class "shelf-item"
的列表中您可以使用 chromedriver 代替 PhantomJS() 和以下代码:
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
def parse(url):
driver.get(url)
driver.implicitly_wait(10)
title_list = driver.find_elements_by_xpath('//a[@class="shelf-product-title"]/h2')
title_list_text = [t.get_attribute('textContent') for t in title_list]
return title_list_text
titles_list = parse("https://www.jumbo.cl/frutas-y-verduras?page=1")
print(titles_list)
但请注意,如果您想解析第二页和其他页面,则必须将第二页 url 传递给函数,例如:
titles_list = parse("https://www.jumbo.cl/frutas-y-verduras?page=2")
等等。或者在页面底部找到一个寻呼机按钮,点击它并重新解析另一个页面