用python写爬取京东购物车
时间: 2023-10-15 09:07:54 浏览: 228
好的,可以使用 Python 的 requests 和 BeautifulSoup 库来实现爬取京东购物车的功能。
首先,我们需要登录京东账号并获取到登录后的 cookies。这里可以使用 selenium 自动化测试工具来模拟登录。
```python
from selenium import webdriver
import time
# 设置 Chrome 浏览器的路径
chromedriver_path = 'path/to/chromedriver'
# 创建 Chrome 浏览器实例并打开京东网址
browser = webdriver.Chrome(chromedriver_path)
browser.get('https://www.jd.com/')
# 等待网页加载完成
time.sleep(3)
# 点击京东登录按钮
login_btn = browser.find_element_by_link_text('你好,请登录')
login_btn.click()
# 等待登录弹窗出现
time.sleep(2)
# 切换到登录弹窗的 iframe 中
iframe = browser.find_element_by_css_selector('#loginFrame')
browser.switch_to.frame(iframe)
# 点击账户登录选项
login_tab = browser.find_element_by_xpath('//*[@id="tab-account"]')
login_tab.click()
# 输入用户名和密码
username_input = browser.find_element_by_id('loginname')
password_input = browser.find_element_by_id('nloginpwd')
username_input.send_keys('your_username')
password_input.send_keys('your_password')
# 点击登录按钮
submit_btn = browser.find_element_by_id('loginsubmit')
submit_btn.click()
# 等待登录成功后跳转到首页
time.sleep(3)
```
接下来,我们需要获取购物车页面的 HTML 代码,并使用 BeautifulSoup 解析出商品的信息。
```python
import requests
from bs4 import BeautifulSoup
# 获取购物车页面的 HTML 代码
cookies = browser.get_cookies()
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get('https://cart.jd.com/cart.action', headers=headers, cookies={c['name']:c['value'] for c in cookies})
# 解析购物车页面 HTML 代码
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.select('div.item-form')
# 遍历购物车中每个商品并输出名称和价格
for item in items:
name = item.select_one('div.p-name > a').text.strip()
price = item.select_one('div.p-price > strong > i').text.strip()
print(name, price)
```
这样就可以输出购物车中每个商品的名称和价格了。注意,这里需要将登录成功后获取到的 cookies 添加到 requests 的 headers 中,否则无法获取到购物车页面的 HTML 代码。
完整代码如下:
```python
from selenium import webdriver
import time
import requests
from bs4 import BeautifulSoup
# 设置 Chrome 浏览器的路径
chromedriver_path = 'path/to/chromedriver'
# 创建 Chrome 浏览器实例并打开京东网址
browser = webdriver.Chrome(chromedriver_path)
browser.get('https://www.jd.com/')
# 等待网页加载完成
time.sleep(3)
# 点击京东登录按钮
login_btn = browser.find_element_by_link_text('你好,请登录')
login_btn.click()
# 等待登录弹窗出现
time.sleep(2)
# 切换到登录弹窗的 iframe 中
iframe = browser.find_element_by_css_selector('#loginFrame')
browser.switch_to.frame(iframe)
# 点击账户登录选项
login_tab = browser.find_element_by_xpath('//*[@id="tab-account"]')
login_tab.click()
# 输入用户名和密码
username_input = browser.find_element_by_id('loginname')
password_input = browser.find_element_by_id('nloginpwd')
username_input.send_keys('your_username')
password_input.send_keys('your_password')
# 点击登录按钮
submit_btn = browser.find_element_by_id('loginsubmit')
submit_btn.click()
# 等待登录成功后跳转到首页
time.sleep(3)
# 获取购物车页面的 HTML 代码
cookies = browser.get_cookies()
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get('https://cart.jd.com/cart.action', headers=headers, cookies={c['name']:c['value'] for c in cookies})
# 解析购物车页面 HTML 代码
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.select('div.item-form')
# 遍历购物车中每个商品并输出名称和价格
for item in items:
name = item.select_one('div.p-name > a').text.strip()
price = item.select_one('div.p-price > strong > i').text.strip()
print(name, price)
# 关闭浏览器
browser.quit()
```
阅读全文