简介❤❤
码农不是吗喽(大学生版)-CSDN博客
在本文中,我们将探讨如何使用Python编程语言结合Selenium库来爬取京东网站上的商品数据。Selenium是一个强大的工具,可以模拟真实用户对网页的交互操作,非常适合进行网页自动化测试和数据抓取。
一、环境准备🎉
(❤ ω ❤)
- Python 3.x
- Selenium库
- lxml库
- ChromeDriver或EdgeDriver(根据使用的浏览器)
二、正文🎃
1. 导入必要的库
首先,我们需要导入Selenium WebDriver以及lxml库,用于解析网页源代码。
from selenium import webdriver
from selenium.webdriver.common.by import By
from lxml import etree
import time
2. 设置WebDriver
接下来,初始化WebDriver,这里我们使用的是Edge浏览器。
driver = webdriver.Edge()
driver.maximize_window()
3. 编写爬虫函数
定义一个函数
get_info
来获取商品信息,并通过递归调用
NextPage
函数来实现翻页。
def get_info(url, page):
page = page + 1
driver.get(url)
driver.implicitly_wait(10)
selector = etree.HTML(driver.page_source)
infos = selector.xpath('//*[@id="J_goodsList"]/ul/li') # 修改XPath选择器以匹配正确的元素
for info in infos:
price = info.xpath('.//div[3]/strong/i/text()')[0] # 确保返回的是列表,并使用[0]获取第一个元素
print(price)
shop = info.xpath('.//div[7]/span/a/text()')[0] # 同上
print(shop)
if page <= 5:
NextPage(url, page)
# else部分不需要,可以删除
4. 翻页逻辑
定义
NextPage
函数来处理翻页逻辑,并在找不到下一页按钮时给出提示。
def NextPage(url, page):
driver.get(url)
driver.implicitly_wait(10)
try:
driver.find_element_by_xpath('//*[@id="J_bottomPage"]').click() # 确保元素存在
except:
print("没有找到下一页按钮,可能已经到最后一页或页面结构有变化。")
time.sleep(10)
driver.get(driver.current_url)
driver.implicitly_wait(10)
get_info(driver.current_url, page)
5. 主函数
编写主函数来启动爬虫,首先访问京东首页,搜索“手机”,然后开始爬取商品数据。
if __name__ == '__main__':
page = 1
url = 'https://www.jd.com/'
driver.get(url)
driver.implicitly_wait(10)
# 使用By.ID来指定查找元素的方式
driver.find_element(By.ID, 'key').clear()
driver.find_element(By.ID, 'key').send_keys('手机')
# 假设'button'是按钮元素的class name
driver.find_element(By.CLASS_NAME, 'button').click()
time.sleep(3)
get_info(driver.current_url, page)
五、结论
本文介绍了使用Python和Selenium库爬取京东商品数据的方法。通过编写自动化脚本,我们可以高效地获取网页上的数据,为数据分析和市场研究提供支持。
参考文献
- Selenium with Python — Selenium Python Bindings 2 documentation (selenium-python.readthedocs.io)
- lxml - Processing XML and HTML with Python
版权归原作者 码农不是吗喽(大学生版) 所有, 如有侵权,请联系我们删除。