爬虫技术:爬取淘宝美食数据:崔庆才思路

# TODO selenium已经被检测出来

import random
import re
import time
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.Chrome()

def search():
    """执行后跳转到登录界面--手动登录,且wait容易引起超时错误,因此需要捕捉"""
    try:
        driver.get("https://www.taobao.com/")
        # 获取输入框
        input = WebDriverWait(driver, 15).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, "#q"))
        )
        # 获取搜索按钮,TODO 为什么不用id选择器呢?
        submit = WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#J_TSearchForm > div.search-button > button")))
        input.send_keys("美食")
        time.sleep(1)
        submit.click()
        # 获取全部页数
        total = WebDriverWait(driver,15).until(EC.presence_of_element_located((By.CSS_SELECTOR,"#mainsrp-pager > div > div > div > div.total")))
        return total.text
    except TimeoutError:
        return search()

def next_page(page):
    try:
        # 获取第几页输入框
        input = WebDriverWait(driver, 15).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > input"))
        )
        # 获取确定按钮
        submit = WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit")))
        input.clear()
        input.send_keys(page)
        # time.sleep(1)  # 1.解决方式:翻页翻到34页,出现滑块验证,系统检测出来了,是自动化操作,时间不能固定
        second = random.randint(1,6) # 设置随机时间后,第一次就要进行人工验证,# TODO 淘宝验证出selenium的方式是啥?
        time.sleep(second)
        submit.click()
        # 判断条件:当前高亮文本的内容和页码参数是否相同
        WebDriverWait(driver,15).until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,"#mainsrp-pager > div > div > div > ul > li.item.active > span"),str(page)))
    except TimeoutError:
        return next_page(page)

if __name__ == ‘__main__‘:
    total = search()  # 共 100 页,
    pattern = re.compile("(\d+)",re.S)
    total_page = re.search(pattern,total)
    total_page = int(total_page.group(1))
    for i in range(2, total_page + 1):
        next_page(i)

原文地址:https://www.cnblogs.com/meloncodezhang/p/11564049.html

时间: 2024-10-16 12:06:41

爬虫技术:爬取淘宝美食数据:崔庆才思路的相关文章

淘宝密码(爬虫爬取淘宝美食的数据源码)

淘宝密码(爬虫爬取淘宝美食的数据源码) 正则匹配找规律 import re import requests # 在搜索框中输入美食得到的数据q=%E7%BE%8E%E9%A3%9Furl = 'https://s.taobao.com/search?q=%E7%BE%8E%E9%A3%9F'response = requests.get(url)# print(response.text) # 用正则对html源码进行解析到一个json数据pattern = re.compile('g_page

爬虫实例之selenium爬取淘宝美食

这次的实例是使用selenium爬取淘宝美食关键字下的商品信息,然后存储到MongoDB. 首先我们需要声明一个browser用来操作,我的是chrome.这里的wait是在后面的判断元素是否出现时使用,第二个参数为等待最长时间,超过该值则抛出异常. browser = webdriver.Chrome() wait = WebDriverWait(browser,10) 声明好之后就需要进行打开网页.进行搜索的操作. #使用webdriver打开chrome,打开淘宝页面,搜索美食关键字,返回

python3爬取淘宝美食

环境:ubuntu16.04python3.5python库: selenium, pyquery,pymongo, re 要求:设置×××面浏览器访问,并将商品列表存入mongoDB数据库. 分析流程: #!/usr/bin/env python # -*- coding:utf-8 -*- """ 1.爬取淘宝美食的流程 - 搜索关键字: 用selenium打开浏览器,模拟输入关键字,并搜索对应的商品列表. - 分析页码并翻页,模拟翻页,查看到所有页面的商品列表. - 分

用selenium爬取淘宝美食

'''利用selenium爬取淘宝美食网页内容''' import re from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.su

Python3爬虫爬取淘宝商品数据

这次的主要的目的是从淘宝的搜索页面获取商品的信息.其实分析页面找到信息很容易,页面信息的存放都是以静态的方式直接嵌套的页面上的,很容易找到.主要困难是将信息从HTML源码中剥离出来,数据和网页源码结合的很紧密,剥离数据有一定的难度. 然后将获取的信息写入excel表格保存起来,这次只爬取了前面10页 的内容.在运行代码的过程中发现,30页后面的数据有问题,出现了手机价格为0的情况,这是不符合实际的,码也没有写错误处理的代码. 这次先写个粗略的,有点凌乱的感觉,下次有时间再系统的整理整理吧. im

利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. 不同关键词word对应的sales的统计分析 3. 商品的价格分布情况分析 4. 商品的销量分布情况分析 5. 不同价格区间的商品的平均销量分布 6. 商品价格对销量的影响分析 7. 商品价格对销售额的影响分析 8. 不同省份或城市的商品数量分布 9.不同省份的商品平均销量分布 注:本项目仅以以上几项分析为

selenium跳过webdriver检测并爬取淘宝我已购买的宝贝数据

简介 上一个博文已经讲述了如何使用selenium跳过webdriver检测并爬取天猫商品数据,所以在此不再详细讲,有需要思路的可以查看另外一篇博文. 源代码 # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.w

【Python3 爬虫】14_爬取淘宝上的手机图片

现在我们想要使用爬虫爬取淘宝上的手机图片,那么该如何爬取呢?该做些什么准备工作呢? 首先,我们需要分析网页,先看看网页有哪些规律 打开淘宝网站http://www.taobao.com/ 我们可以看到左侧是主题市场,将鼠标移动到[女装/男装/内衣]这一栏目,我们可以看到更细类的展示 假如我们现在需要爬取[羽绒服],那么我们进入到[羽绒服]衣服这个界面 此时查看浏览器地址,我们可以看到 网址复制到word或者其他地方会发生url转码 我们可以选中[羽绒服模块的第1,2,3页进行网址对比],对比结果

利用Selenium爬取淘宝商品信息

一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样.由于这个性质,Selenium也是一个强大的网络数据采集工具,其可以让浏览器自动加载页面,这样,使用了异步加载技术的网页,也可获取其需要的数据. Selenium模块是Python的第三方库,可以通过pip进行安装: pip3 install selenium Selenium自己不带浏览器,需要配合第三方浏览器来使用.通过help命