利用selenium获取京东商城搜索信息

<! -/* author by:daidai */>
京东商品信息爬取脚本
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from urllib.parse import urlencode
import mongodemo
import time

driver = Chrome()
chrome_options = Options()
chrome_options.add_experimental_option(‘excludeSwitches’, [‘enable-automation’])

keyword = ‘电脑’

京东搜索页的链接url = https://search.jd.com/Search?keyword=电脑&enc=utf-8&wq=电脑&pvid=53766f90843b4166be83aa2139402e65
par = {‘enc’: ‘utf-8’, ‘keyword’: keyword, ‘wq’: keyword}

kw = urlencode(par)

url = 'https://search.jd.com/Search?’ + kw
请求搜索页
driver.get(url)

等待页面加载
driver.implicitly_wait(5)

由于页面有懒加载效果,所以先获取页面的高度
height = driver.execute_script(“return document.body.clientHeight”)

等待页面加载完成
driver.implicitly_wait(7)

由分析知道,页面有懒加载效果,得知一页数据为60条
def get_data():
# 获取包裹商品信息的大标签ul
ul = driver.find_element_by_class_name(‘gl-warp’)
# 商品列表 在标签li class = "gl-item"中, 完整一页一共60个
items = ul.find_elements_by_class_name(‘gl-item’)

if len(items) == 60:
    return items
# 如果没有获取到60条就递归调用,直到获取该页完整的数据
else:
    return get_data()

def parser_data(items):
for item in items:
# 商品的详细信息都在标签div class=p-img 下 它的下面的a标签下是图片的信息
link = item.find_element_by_css_selector(".p-img a").get_attribute(“href”)
# 图片地址
img = item.find_element_by_css_selector(".p-img a img").get_attribute(“src”)
# 因为在图片中也使用了懒加载,所以做判断
if not img:
img = item.find_element_by_css_selector(".p-img a img").get_attribute(“data-lazy-img”)
img = “https:” + img
# 商品价格
price = item.find_element_by_css_selector(".p-price i").text
# 商品的标题
title = item.find_element_by_css_selector(".p-name a em").text
# 店家名
trade_name = item.find_element_by_css_selector(".p-shop a").text
# 评论数
commit = item.find_element_by_css_selector(".p-commit").text
data = {“link”: link, “img”: img, “title”: title, “shop_name”: trade_name, “commit”: commit, “price”: price}
# 存到数据库
mongodemo.insert_data(data)

def get_next_page():
# 获取下一页的数据,获取标签
next_page = driver.find_element_by_partial_link_text(“下一页”)
next_page.click() # 实现点击事件,跳转到下一页
# 滑动屏幕
driver.execute_script("""
window.scrollTo({
top: %s,
behavior: “smooth”
});""" % height)
time.sleep(1) # 等待页面加载
items = get_data()
parser_data(items)

if name == ‘main’:
keyword = input(‘请输入要查找的信息:’)
par = {‘enc’: ‘utf-8’, ‘keyword’: keyword, ‘wq’: keyword}
kw = urlencode(par)
url = 'https://search.jd.com/Search?’ + kw
driver.get(url)
driver.implicitly_wait(10)
height = driver.execute_script(“return document.body.clientHeight”)
driver.implicitly_wait(10)
# 首页的处理 第一页的信息爬取
driver.execute_script("""
window.scrollTo({
top: %s,
behavior: “smooth”
});""" % height)
items = get_data()
parser_data(items)

for i in range(8):
    get_next_page()

time.sleep(30)
driver.close()

利用mongo存储数据

from pymongo import MongoClient

table = None
c = None

def connect_server():
global table, c
c = MongoClient(‘mongodb://root:root@127.0.0.1:27017’) # 获取连接
table = c[‘jd’][‘data’]

def insert_data(data):
if not table:
connect_server()
table.insert(data)

def close():
c.close()

要使用Selenium获取京东店铺的商品信息,你可以按照以下步骤进行操作: 1. 首先,你需要安装Selenium库。你可以在Python中使用`pip install selenium`命令来安装。 2. 接下来,你需要下载对应的浏览器驱动,比如Chrome浏览器的驱动。你可以在Selenium官方网站上找到对应的驱动下载链接。 3. 安装完成后,你需要导入Selenium库,并创建一个浏览器实例。比如,如果你选择的是Chrome浏览器,可以使用以下代码来创建一个Chrome浏览器实例: ``` from selenium import webdriver # 创建一个Chrome浏览器实例 driver = webdriver.Chrome('驱动的路径') ``` 4. 打开京东的店铺页面。你可以使用以下代码来打开京东的店铺页面: ``` # 打开京东的店铺页面 driver.get('https://shop.jd.com/') ``` 5. 定位并点击店铺内的商品。你可以使用Selenium的定位方法来定位到需要点击的元素,比如使用`find_element_by_xpath()`方法来定位到商品元素,并使用`click()`方法来点击: ``` # 定位并点击店铺内的商品 element = driver.find_element_by_xpath('xpath定位') element.click() ``` 6. 获取商品信息。你可以使用Selenium的定位方法来定位到需要获取的商品信息,并使用`text`属性来获取文本内容: ``` # 获取商品信息 product_info = driver.find_element_by_xpath('xpath定位').text ``` 通过以上步骤,你可以使用Selenium获取京东店铺的商品信息。请注意,你需要根据实际情况替换代码中的驱动路径和定位表达式,以适应你所要获取的具体商品信息。<span class="em">1</span> #### 引用[.reference_title] - *1* [基于Python3.3+Selenium3.0框架实战Web自动化测试实战(百度网站实测项目)](https://download.csdn.net/download/pangshui333333/88275005)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值