selenium滚动条的处理很简单,只需在代码中添加一下内容即可:
# 处理滚动条,因为刚开始加载页面时,滚动条的内容较短,只有等待一定时间页面才能完全加载成功
js = "document.documentElement.scrollTop=100000"
chrome.execute_script(js)
# 一定要睡够足够的时间,才能保证加载完全
sleep(20)
完整的代码如下
from selenium import webdriver
from lxml import etree
from time import sleep
url = "https://search.jd.com/Search?keyword=%E9%85%92&enc=utf-8&wq=jiu&pvid=fc27de621c334a48b83bf3638aad4290"
chrome = webdriver.Chrome()
chrome.get(url)
# 处理滚动条,因为刚开始加载页面时,滚动条的内容较短,只有等待一定时间页面才能完全加载成功
js = "document.documentElement.scrollTop=100000"
chrome.execute_script(js)
# 一定要睡够足够的时间,才能保证加载完全
sleep(20)
# 取完滚动条中的内容,在获取html文件
html = chrome.page_source
e = etree.HTML(html)
# 爬取商品价格,商品名
prices = e.xpath("//div[@class='p-price']/strong/i/text()")
names = e.xpath("//div[@class='gl-i-wrap']/div[@class='p-name p-name-type-2']/a/em")
for name, price in zip(names, prices):
# name.xpath('string(. )'):表示字符串格式化,因为有些name的参数值有空格且有两行
# 使用xpath直接拿到的是一个列表,
# xpath('string(. )')可以使列表中的内容合成拼接,不过在使用这个方法时,xpath中的内容不用添加text()
print(name.xpath('string(. )'), ":", price)