Python selenium 爬取淘宝商品

Catalog

翻页

from urllib import parse
domain = 'https://s.taobao.com/search?'
keyword = 'Python3网络爬虫视频'
for i in range(199):
    # URL:页码+搜索词
    page = i * 44
    url = domain + parse.urlencode({'q': keyword, 's': page})
    print(url)

获取动态页面信息

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 创建浏览器驱动+显式等待
driver = webdriver.Firefox()
driver.get('https://s.taobao.com/search?q=Python爬虫&s=44')
wait = WebDriverWait(driver, 9)
# 等待页面加载
wait.until(EC.presence_of_element_located(
    (By.CSS_SELECTOR, '#mainsrp-itemlist .items .item')))
# 页面源码
html = driver.page_source
print(html)

提取商品信息

from pyquery import PyQuery as pq
doc = pq(html)
# 获取当前页所有商品信息,返回生成器
items = doc('#mainsrp-itemlist .items .item').items()
for n, item in enumerate(items):
    product = {
        'image': item.find('.pic .img').attr('src'),
        'price': item.find('.price').text(),
        'deal_cnt': item.find('.deal-cnt').text()[:-3],
        'title': item.find('.title').text(),
        'shop': item.find('.shop').text(),
        'location': item.find('.location').text()}

完整代码

from urllib import parse
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from pyquery import PyQuery as pq

# 创建浏览器驱动+显式等待
driver = webdriver.Firefox()
wait = WebDriverWait(driver, 9)

# 获取商品信息
def get_products():
    # 等待页面加载
    wait.until(EC.presence_of_element_located(
        (By.CSS_SELECTOR, '#mainsrp-itemlist .items .item')))
    # 页面源码
    html = driver.page_source
    # 创建PyQuery对象
    doc = pq(html)
    # 获取当前页所有商品信息,返回生成器
    items = doc('#mainsrp-itemlist .items .item').items()
    for n, item in enumerate(items):
        product = {
            # 'image': item.find('.pic .img').attr('src'),
            'price': item.find('.price').text(),
            'deal_cnt': item.find('.deal-cnt').text()[:-3],
            'title': item.find('.title').text(),
            'shop': item.find('.shop').text(),
            'location': item.find('.location').text()}
        # 一页44个商品
        if n < 44:
            print(n + 1, product)
        else:
            break

# 淘宝搜索+翻页
def main():
    domain = 'https://s.taobao.com/search?'
    keyword = 'Python3网络爬虫视频'
    for i in range(199):
        # URL:页码+搜索词
        page = i * 44
        url = domain + parse.urlencode({'q': keyword, 's': page})
        driver.get(url)
        # 获取商品信息
        try:
            get_products()
        except TimeoutException as te:
            print('结束页:', url)
            break
    # 关闭浏览器
    driver.close()

if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值