文章目录

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169

  • 1.只读取第一页
    • 1.1准备工作
    • 1.2.定位
    • 1.3.获取商品信息
    • 1.4. 整体代码
    • 1.5.输出结果展示
    • 1.6改进,存储在CSV文件内并分行存储
  • 2.读取多页商品信息
    • 2.1部分问题
    • 2.2代码
    • 2.3结果展示

在学习本节时,发现在淘宝页面搜索需要登录账号密码,因此就选择天猫网页进行爬取,但是只能爬取第一页,之后的页面也要登录账号。(京东页面搜索下一页不要登录账号,有时间做一个爬取京东页面商品信息)

1.只读取第一页

1.1准备工作

天猫搜索页面的URL,以及关键字
https://list.tmall.com/search_product.htm?q=
q后面就是我们需要搜索的商品名称,可以使用quote函数输入keyword,也可以使用send_keys传入到输入框,本文使用第二种方法.

url='https://list.tmall.com/search_product.htm?q='+quote(keyword)
send_keys(keyword)

1.2.定位

1. 首先定位输入框

2.定位搜索按键

3.代码定位

    input=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mq')))submit=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.mallSearch-input > button:nth-child(3)')))input.clear()input.send_keys(keyword)submit.click()

使用input定位到输入框,然后使用input.send_keys传入搜索关键字。
使用submit定位搜索按键,输入关键字之点击搜索,搜索出商品信息。

1.3.获取商品信息

我们使用pyquery来遍历商品信息,获取商品图片,商品具体名称,商品价格,商品详细界面,商品销售额。

    items=doc('div .product').items()for item in items:product={'image':item.find('div div a img').attr('src'),'name':item.find('.productTitle a').text(),'price':item.find('.productPrice em').text(),'detail':item.find('div div a').attr('href'),'shop':item.find('.productShop a').text(),'sales':item.find('.productStatus span em').text()}

1.4. 整体代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from urllib.parse import quote
from urllib.parse import urlencode
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
import csv,json
brower=webdriver.Firefox()
wait=WebDriverWait(brower,20)
keyword='huawei'def index_page(page):url='https://list.tmall.com/search_product.htm?q='brower.get(url)input=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mq')))submit=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.mallSearch-input > button:nth-child(3)')))input.clear()input.send_keys(keyword)submit.click()return  get_products(brower)def get_products(brower):html=brower.page_sourcedoc=pq(html)items=doc('div .product').items()for item in items:product={'image':item.find('div div a img').attr('src'),'name':item.find('.productTitle a').text(),'price':item.find('.productPrice em').text(),'detail':item.find('div div a').attr('href'),'shop':item.find('.productShop a').text(),'sales':item.find('.productStatus span em').text()}print(product)yield product
def saveinformation(infors):with open('data.csv','w',encoding='utf-8') as f:writer=csv.writer(f)writer.writerow(infors)if __name__=='__main__':result=index_page(1)saveinformation(result)

因为天猫界面只能爬取第一页信息,其他页需要登录才能查看,因此本文传入page=1.
我们将读取信息写入csv文件中,但是输出是整行输入,不能分行输入,还在寻找原因。

1.5.输出结果展示

{'image': '//img.alicdn.com/bao/uploaded/i2/2838892713/O1CN01KmhxMx1Vub9Om1ix8_!!2838892713.jpg', 'name': '【限时享12期免息】华为/HUAWEI P40 Pro|5G SoC芯片超感知徕卡
四摄华为p40pro 5g华为手机华为官方旗舰店', 'price': '¥6488.00', 'detail': '//detail.tmall.com/item.htm?id=613832405367&skuId=4501042263809&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '1.7万笔'}
{'image': '//img.alicdn.com/bao/uploaded/i3/2616970884/O1CN01E4dXaU1IOukPBOKrb_!!2616970884.jpg', 'name': '【9.25号享12期免息】华为/HUAWEI P40Pro|5G SoC芯片手机徕卡
四摄50倍变焦曲面屏官方旗舰店正品华为p40pro', 'price': '¥6488.00', 'detail': '//detail.tmall.com/item.htm?id=614820399492&skuId=4326362936208&user_id=2616970884&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '苏宁易购官方旗舰店', 'sales': '4599笔'}
{'image': '//img.alicdn.com/bao/uploaded/i1/2838892713/O1CN01ASqM6R1Vub9Lua8E8_!!2838892713.jpg', 'name': '华为/HUAWEI MateBook D14Windows版 英特尔10代 i5+8GB/16GB+512GB SSD 独显 笔记本电脑', 'price': '¥4999.00', 'detail': '//detail.tmall.com/item.htm?id=610840455173&skuId=4463626930382&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '4069笔'}
{'image': '//img.alicdn.com/bao/uploaded/i2/2838892713/O1CN01TjohBN1Vub9MbcSCc_!!2838892713.jpg', 'name': '【限时享12期免息】华为/HUAWEI P40 | 5GSoC芯片超感知徕卡三
摄华为p40 5g智能手机华为手机华为官方旗舰店', 'price': '¥4488.00', 'detail': '//detail.tmall.com/item.htm?id=613832301513&skuId=4497703782091&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '2.0万笔'}
{'image': '//img.alicdn.com/bao/uploaded/i1/2838892713/O1CN01ltNfaA1Vub9Rrkxd3_!!2838892713.jpg', 'name': '【限时享12期免息+200优惠券】Huawei/华为Mate30 Pro5G芯片四
摄mate30pro 5g手机华为手机华为官方旗舰店', 'price': '¥6399.00', 'detail': '//detail.tmall.com/item.htm?id=606307762219&skuId=4309474780744&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '8139笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': 'Huawei/华为 HUAWEI MatePad Pro平板电脑 轻薄全面屏办公学习娱
乐智能平板', 'price': '¥3299.00', 'detail': '//detail.tmall.com/item.htm?id=607884046949&skuId=4265065828223&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '5435笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': '华为/HUAWEI MateBook 14 2020款英特尔十代i7+16GB+512GB SSD+MX350 独显触控屏笔记本电脑', 'price': '¥7399.00', 'detail': '//detail.tmall.com/item.htm?id=611563243161&skuId=4535895359432&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '1404笔'}
em.htm?id=606241138896&skuId=4447336816956&user_id=268451883&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '三际数码官方旗舰店', 'sales': '400笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': '【官方正品】华为平板M6 8.4英寸 影音游戏娱乐 WiFi/4G可通话平
板电脑 高性能新品 苏宁官方旗舰店', 'price': '¥2199.00', 'detail': '//detail.tmall.com/item.htm?id=597644950589&skuId=4611686616072338493&user_id=2616970884&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '苏宁易购官方旗舰店', 'sales': '94笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': '华为/HUAWEI MateBook D 14 Windows版 英特尔10代 i7+16GB+512GB SSD 独显 笔记本电脑', 'price': '¥6199.00', 'detail': '//detail.tmall.com/item.htm?id=610156068400&skuId=4466875367173&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '632笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': '【现货版速发】华为matepad 10.8英寸平板电脑二合一2020新款pro
全网通话m6大屏pad学习学生12寸办公游戏iPad', 'price': '¥3399.00', 'detail': '//detail.tmall.com/item.htm?id=624249102569&skuId=4626490291781&user_id=3461286402&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '蓝阳数码专营店', 'sales': '2471笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': '【顺丰速发】华为平板MatePad平板电脑10.4英寸2020新款Pro教育全
面大屏M6全网通话10寸Huawei手机二合一ipad', 'price': '¥1899.01', 'detail': '//detail.tmall.com/item.htm?id=617111511833&skuId=4611686635538899737&user_id=3394933058&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为华亲专卖店', 'sales': '1488笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': '【官方正品】华为/HUAWEI MatePad Pro 5G 麒麟990 绚丽全面屏平
板电脑智能学习游戏一体机', 'price': '¥5299.00', 'detail': '//detail.tmall.com/item.htm?id=618290735512&skuId=4364946048927&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '1128笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': '【畅销爆款】HUAWEI/华为nova 5 Pro 8+128GB 麒麟980新品4800万AI四摄超级快充屏内指纹NFC手机', 'price': '¥2199.00', 'detail': '//detail.tmall.com/item.htm?id=596822551576&skuId=4465987566936&user_id=2616970884&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '苏宁易购官方旗舰店', 'sales': '2317笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': 'Huawei/华为畅享20 Pro 5GSoC芯片华为畅享20pro5g手机智能手机华
为手机华为官方旗舰店', 'price': '¥1999.00', 'detail': '//detail.tmall.com/item.htm?id=620350072768&skuId=4556789582028&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '6934笔'}
{'image': 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'name': 'Huawei/华为 华为平板 M6 10.8英寸平板电脑四声道 一屏两用学习
娱乐智能平板电脑', 'price': '¥2699.00', 'detail': '//detail.tmall.com/item.htm?id=596577969318&skuId=4149991176279&user_id=2838892713&cat_id=2&is_b=1&rn=1b4543038042621f359957a157a731bb', 'shop': '华为官方旗舰店', 'sales': '789笔'}

1.6改进,存储在CSV文件内并分行存储

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from urllib.parse import quote
from urllib.parse import urlencode
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
import csv,json
brower=webdriver.Firefox()
wait=WebDriverWait(brower,20)
keyword='huawei'def index_page(page):url='https://list.tmall.com/search_product.htm?q='brower.get(url)input=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mq')))submit=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.mallSearch-input > button:nth-child(3)')))input.clear()input.send_keys(keyword)submit.click()return  get_products(brower)def get_products(brower):html=brower.page_sourcedoc=pq(html)items=doc('div .product').items()for item in items:information=[]image=item.find('div div a img').attr('src')information.append(str(image))name=item.find('.productTitle a').text()information.append(str(name))price=item.find('.productPrice em').text()information.append(str(price))detail=item.find('div div a').attr('href')information.append(str(detail))shop=item.find('.productShop a').text()information.append(str(shop))sales=item.find('.productStatus span em').text()information.append(str(sales))print(information)saveinformation(information)
def saveinformation(infors):with open('data1.csv','a+',newline='',encoding='utf-8') as f:writer=csv.writer(f)writer.writerow(infors)
if __name__=='__main__':index_page(1)

我们在代码中取消字典存储,选择使用列表存储。这样在CSV文件中可以分开存取数据,使用’a+'不覆盖已经读取内容,在打开文件中添加newline减少多余换行.
结果展示:

2.读取多页商品信息


选择下一页商品信息有两种方法,1.点击下一页,2.输入想要跳转的页面,点击确认。本文使用第二种方法。
对上面代码进行修改,使send_keys只传递page。

2.1部分问题

跳转下一页时,可能中间需要输入账号,代码设置等待时间20秒,输入完账号密码就可以继续爬取页面信息。
使用for循环逐步跳转其他页面。

2.2代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from urllib.parse import quote
from urllib.parse import urlencode
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
import csv,json
brower=webdriver.Firefox()
wait=WebDriverWait(brower,20)
keyword='huawei'def index_page(pages):url='https://list.tmall.com/search_product.htm?q='+quote(keyword)brower.get(url)for page in range(1,pages+1):print('正在爬取第'+str(page)+'页')if page>1:input=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'.ui-page-skipTo')))submit=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'button.ui-btn-s')))input.clear()input.send_keys(page)brower.implicitly_wait(10)submit.click()wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,'.ui-page-num'),str(page)))get_products()def get_products():html=brower.page_sourcedoc=pq(html)items=doc('div .product').items()for item in items:information=[]image=item.find('div div a img').attr('src')information.append(str(image))name=item.find('.productTitle a').text()information.append(str(name))price=item.find('.productPrice em').text()information.append(str(price))detail=item.find('div div a').attr('href')information.append(str(detail))shop=item.find('.productShop a').text()information.append(str(shop))sales=item.find('.productStatus span em').text()information.append(str(sales))print(information)saveinformation(information)
def saveinformation(infors):with open('data2.csv','a+',newline='',encoding='utf-8') as f:writer=csv.writer(f)writer.writerow(infors)if __name__=='__main__':page=3index_page(page)

2.3结果展示

一页商品80个,三页一共240个

Python爬虫使用selenium爬取天猫商品信息相关推荐

  1. layui获取input信息_python爬虫—用selenium爬取京东商品信息

    python爬虫--用selenium爬取京东商品信息 1.先附上效果图(我偷懒只爬了4页) 2.京东的网址https://www.jd.com/ 3.我这里是不加载图片,加快爬取速度,也可以用Hea ...

  2. python爬虫使用selenium爬取动态网页信息——以智联招聘网站为例

    python版本3.6 #导入两个模块 from selenium import webdriver import time from openpyxl import Workbook import ...

  3. python爬虫——用selenium爬取淘宝商品信息

    python爬虫--用selenium爬取淘宝商品信息 1.附上效果图 2.淘宝网址https://www.taobao.com/ 3.先写好头部 browser = webdriver.Chrome ...

  4. 简单爬虫,爬取天猫商品信息

    前言 这是我第一次用Java来写爬虫项目,研究的也不是很透彻,所以爬虫技术的理论方面的就不说太多了. 主要还是以如何爬取商品信息为主,爬取最简单的商品信息,给出大概的思路和方法. 对于没有反爬技术的网 ...

  5. python爬取天猫商品信息

    python爬取天猫商品信息 主要信息有:商品名,价格,月销量,评论数,人气值,店铺评分 以智能手机为例! 首先,发掘网址规律: 第二页的网址如上 第三页的网址如上 注意网址中的数字(靠近中间位置): ...

  6. python爬虫——使用selenium爬取微博数据(一)

    python爬虫--使用selenium爬取微博数据(二) 写在前面 之前因为在组里做和nlp相关的项目,需要自己构建数据集,采用selenium爬取了几十万条微博数据,学习了很多,想在这里分享一下如 ...

  7. python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息

    python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...

  8. Python爬虫入门(爬取豆瓣电影信息小结)

    Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...

  9. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

最新文章

  1. Apache发布TomEE 7.1,支持Java 8和MicroProfile 1.2
  2. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍
  3. meta标签的常见用法
  4. oc开源应用_失眠:一款开源应用,可根据睡眠周期告诉您何时入睡
  5. shell awk命令
  6. DataGrid控件(可以实现不刷新增加删除等操作)
  7. RedMonk最新编程语言排行榜出炉:JS霸榜,C++下降至第7
  8. 链队列基本运算的实现
  9. 软件测试技术路线怎么走
  10. linux修改文件类型和权限
  11. Macbook PS快捷键
  12. 学会用Word制作拼音田字格练习本,简单实用更省钱,宝妈必学
  13. cell和battery的区别
  14. 360安全助手 -- 强力卸载电脑上的软件 的问题
  15. 计算机在语文教学中,计算机课件在语文课堂教学中的应用——用Powerpoint制作课件的一点体会(网友来稿)...
  16. 金丹期前期:1.10、python语言进阶-文件操作
  17. stream 计算一个List对象中某个字段总和
  18. latex怎样让题号顶格_笔记本-latex写作问题集锦
  19. ApkScan-PKID 查壳工具下载使用以及相关技术介绍
  20. python爬虫实战-bs4爬取2345电影

热门文章

  1. 个人认为最好用的ssh(shell)连接工具加ssh连接linux 服务器(centos 8)
  2. 区块链动态化监管方案
  3. Vue2全家桶+Element搭建的PC端在线音乐网站
  4. 抖音X-SS-STUB算法
  5. php 操作数组array_merge使用时数组包含数字键名的问题解决方法
  6. 服务器的带宽是什么意思?服务器的带宽指的是上行还是下行?
  7. Python基础 2.1 文件操作
  8. 层次分析法及matlab代码
  9. easyPOI和easyExcel对图片的导出
  10. bzoj2386 [CEOI2011] Team