用XPath做,得到了空值,遇到了反爬
你需要先确定返回的响应内容中有没有这些分类信息,有的话则是xpath没写对。
没有分类信息的话,需要在请求时构造和浏览器相同的请求头信息。
from selenium import webdriver
if __name__ == '__main__':
Driver = webdriver.Chrome() # 初始化谷歌浏览器的webdriver驱动
Driver.get("https://www.jd.com/") # 首先跳转到狗东官网(从百度等搜索网站跳转到目标网站也可以)
Driver.get("https://channel.jd.com/1320-1585.html") # 然后再跳转到需要爬取的网站
# 不能一上来就跳转到需要爬取的网站,这样的行为无异于直接告诉狗东,我是爬虫
Driver.implicitly_wait(3) # 这条语句的最主要作用是让页面全部加载出来(这里涉及到狗东的反爬措施)
elements = Driver.find_elements_by_xpath(r'//div[@class="threetpl_nav_body"]/a') # 这里利用xpath爬取了一个可遍历的elements对象
# find_elements_by_xpath方法将要被selenium删除,应该写成Driver.find_elements('xpath', r'//div[@class="threetpl_nav_body"]/a')
# 但是因为个人习惯原因,我这里还是用的是find_elements_by_xpath
result_dict = {} # 新建一个result_dict字典,用于存放结果
for element in elements: # 遍历elements对象,生成element对象
result_dict[element.text] = element.get_attribute('href') # 将结果保存到结果字典中
print(result_dict)