import time import openpyxl from selenium import webdriver from bs4 import BeautifulSoup # 设置请求头,模拟真实浏览器访问 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36', } # 使用Selenium启动浏览器 driver = webdriver.Chrome() data = [] counter = 1 # 序列号计数器 # 打开网页 for i in range(1,6): url = 'https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&psort=3&wq=%E6%89%8B%E6%9C%BA&psort=3&pvid=0faa3ec65d444d68a66161cdf464d451&psort=3&page={}&s=61&click=0'.format( (i * 2) - 1) driver.get(url) # 模拟滚动页面,以触发异步请求加载更多商品信息 driver.execute_script('window.scrollTo(0, document.body.scrollHeight);') time.sleep(2) # 获取完整页面内容 html = driver.page_source # 解析网页内容,提取商品名称和价格信息 soup = BeautifulSoup(html, 'html.parser') products = soup.select('.gl-item') for product in products: product_id = product['data-sku'] # 提取产品ID name = product.select('.p-name em')[0].text.strip() product_url = 'https:' + product.select('.p-name a')[0]['href'] # 修改产品URL price = product.select('.p-price strong i')[0].text.strip() data.append([counter, product_id, name, product_url, price]) # 将产品数据添加到列表中 counter += 1 # 每个产品的增量计数器 # 关闭浏览器 driver.quit() # 创建Excel文件并保存数据 wb = openpyxl.Workbook() ws = wb.active ws.append(['top', '商品ID', '商品名称', '商品链接', '价格']) # 添加已修改列顺序的标题行 for item in data: ws.append(item) wb.save('jd_top300.xlsx') print("数据已保存到jd_top300.xlsx文件。")
时间: 2024-02-03 21:02:49 浏览: 187
这是一个爬取京东手机商品信息的Python脚本,使用了Selenium和BeautifulSoup库。脚本会自动打开Chrome浏览器,模拟滚动页面,获取商品信息,然后将数据保存到Excel文件中。具体解释如下:
1. 导入必要的库:time、openpyxl、selenium和BeautifulSoup。
2. 设置请求头,模拟真实浏览器访问。
3. 使用Selenium启动Chrome浏览器。
4. 定义一个空列表data,用于存储获取的商品数据。
5. 定义一个计数器counter,用于给每个商品编号。
6. 循环遍历5页的商品列表,每页包含60个商品。
7. 访问每个页面,并模拟滚动页面,以触发异步请求加载更多商品信息。
8. 获取完整页面内容。
9. 使用BeautifulSoup解析网页内容,提取商品名称和价格信息。
10. 将商品数据添加到列表data中,并给每个商品编号。
11. 关闭浏览器。
12. 创建一个Excel文件,并将商品数据保存到文件中。
13. 输出保存数据的文件名。
注意:爬取商品信息需要遵守相关法律法规和京东网站的规定。
阅读全文