前几天用python爬取豆瓣关于电影《长城》的影评,发现豆瓣的网页是静态的,心中一阵窃喜。以为对于动态网页了解的不是太多。但是主要是用cookie加headers爬取的。效果还不错,爬取了六七万条网友的评价,后期主要打算研究一下,如何发现那些用户是水军。今天研究了动态网页的爬取,主要是爬取的淘宝网上商品信息。主要是用到了selenium库。

主要是实现一下几个步骤:

(注释)用到的python库:

import re
import time
import random
from bs4 import BeautifulSoup
from selenium import webdriver

(1)通过selenium模拟登陆浏览器(我用的是Firefox,其他的浏览器原理也类似。)

构造火狐模拟浏览器

firefox_login=webdriver.Firefox() (电脑上如果有火狐的话,或打开一个空白的浏览器网页)

登陆淘宝账户(用户名,密码)  (注释,必须切换到账户密码登陆下才能这样登陆,万恶的淘宝,现在的登陆页面是先跳转到扫二维码的登陆方式,所以必须要手动切换回来回事通过selenium 模拟切换回密码登陆状态才行),如果有大神可以告诉我一下如何通过二维码登陆哈,万分感激。

      firefox_login.find_element_by_id('TPL_username_1').clear()firefox_login.find_element_by_id('TPL_username_1').send_keys(u'用户名')firefox_login.find_element_by_id('TPL_password_1').clear()firefox_login.find_element_by_id('TPL_password_1').send_keys(u'密码')

点击登陆 按钮实现登陆

      firefox_login.find_element_by_id('J_SubmitStatic').click()

OK,现在浏览器已经登陆到自己的淘宝账户了。下一步就是搜索你想要的东西了。

(2)搜索相应的信息(在这里我搜了“”代码之美”的书的相关信息)

    firefox_login.find_element_by_id('q').send_keys(u'代码之美')firefox_login.find_element_by_class_name('btn-search').click()

此时你的火狐浏览器中的页面就会跳转到“代码之美”网页,此网页中就包换了淘宝网上关于《代码之美》的信息了(包括商家、书名‘、简介、价格、店铺所在地、已付款人数等’’)

(3)获取循环翻页的页数。(为循环做准备)

首先,获取浏览器下的静态页面

        html=firefox_login.page_source

这时候BeautifulSoup 库就可以发挥它的强大了

      soup = BeautifulSoup(html,'lxml') comments=soup.find_all("div", class_="total")  #匹配总的页数pattern=re.compile(r'[0-9]')pageNum=pattern.findall(comments[0].text)     # 将数字页数提取pageNum=int(pageNum[0])

必须注意的一点就是获得的PageNum必须转换成int型。

(3)对html进行解析

    Infolist=[]    #存储爬去的信息comments=soup.find_all("div", class_="ctx-box J_MouseEneterLeave J_IconMoreNew")for i in  comments:temp=[]Item=i.find_all("div",class_="row row-2 title")  #图书相关信息temp.append(Item[0].text.strip())shop=i.find_all("div",class_="row row-3 g-clearfix")for j in shop:a=j.find_all("span")temp.append(a[-1].text)    #店铺名称address=i.find_all('div',class_='location') temp.append(address[0].text.strip())   #店铺所在地priceandnum=i.find_all("div",class_="row row-1 g-clearfix")for m in priceandnum:Y=m.find_all('div',class_='price g_price g_price-highlight')temp.append(Y[0].text.strip()) #商品价格Num=m.find_all('div',class_='deal-cnt')temp.append(Num[0].text.strip())   #购买人数Infolist.append(temp)

以上爬虫代码必须结合着网页源码才能比较好的理解。

(4) 爬完一页就需要点击刷新数据进行下一次爬去((淘宝页面用的是ajax(意味着不必重新加载真个页面的情况下,对局部数据进行更新,所以网页地址不会改变))
 firefox_login.find_element_by_xpath('//a[@trace="srp_bottom_pagedown"]').click()  #点击下一页ajax刷新数据

以上几个部分基本上就是淘宝网的物品信息必备的几个步骤了。本人也是初步学习爬虫。难免有错误和瑕疵,请大神批评指正。下面是完整的程序。比较简单,后期会加上多线程以及其他相应的相应的情况处理(比如多次登录后,再次登录,淘宝会通过滑动的验证码进行验证,这个可以做一下)。写一下这个也是为了防止自己以后忘记,虽然对于大神来说有些简单,但是,刚开始学习,就是从基础做起。 Fighting,加油!

完整代码如下:
from selenium import webdriver
from bs4 import BeautifulSoup
import random
import re
import time
Infolist=[]def init():   firefox_login=webdriver.Firefox()   #构造模拟浏览器firefox_login.get('https://login.taobao.com/member/login.jhtml?redirectURL=https%3A%2F%2Fwww.taobao.com%2F') #淘宝登录页面firefox_login.maximize_window()#窗口最大化,可有可无,看情况return firefox_logindef login(firefox_login):    #输入账户密码#我请求的页面的账户输入框的'id'是username和密码输入框的'name'是passwordfirefox_login.find_element_by_id('TPL_username_1').clear()firefox_login.find_element_by_id('TPL_username_1').send_keys(u'用户名')firefox_login.find_element_by_id('TPL_password_1').clear()firefox_login.find_element_by_id('TPL_password_1').send_keys(u'密码')firefox_login.find_element_by_id('J_SubmitStatic').click()time.sleep(random.randint(2,5))firefox_login.find_element_by_id('q').send_keys(u'代码之美')firefox_login.find_element_by_class_name('btn-search').click()return firefox_login
def ObtainHtml(firefox_login):data=firefox_login.page_sourcesoup = BeautifulSoup(data,'lxml') comments=soup.find_all("div", class_="ctx-box J_MouseEneterLeave J_IconMoreNew")for i in  comments:temp=[]Item=i.find_all("div",class_="row row-2 title")  #图书相关信息temp.append(Item[0].text.strip())shop=i.find_all("div",class_="row row-3 g-clearfix")for j in shop:a=j.find_all("span")temp.append(a[-1].text)    #店铺名称address=i.find_all('div',class_='location') temp.append(address[0].text.strip())   #店铺所在地priceandnum=i.find_all("div",class_="row row-1 g-clearfix")for m in priceandnum:Y=m.find_all('div',class_='price g_price g_price-highlight')temp.append(Y[0].text.strip()) #商品价格Num=m.find_all('div',class_='deal-cnt')temp.append(Num[0].text.strip())   #购买人数Infolist.append(temp)#   获取循环爬虫的页码数
def getPageNum(firefox_login):data=firefox_login.page_sourcesoup = BeautifulSoup(data,'lxml') comments=soup.find_all("div", class_="total")  #匹配总的页数pattern=re.compile(r'[0-9]')pageNum=pattern.findall(comments[0].text)     # 将数字页数提取pageNum=int(pageNum[0])return pageNum     #用于循环的次数设置# 点击下一页 //更新数据。
def NextPage(firefox_login):firefox_login.find_element_by_xpath('//a[@trace="srp_bottom_pagedown"]').click()  #点击下一页ajax刷新数据if __name__=='__main__':firefox_login=init()  firefox_login=login(firefox_login)Num=getPageNum(firefox_login)for i in range(Num-1):ObtainHtml(firefox_login)NextPage(firefox_login)print("信息爬取完成")

python +selenium 爬取淘宝网商品信息相关推荐

  1. 用Python爬取淘宝网商品信息

    用Python爬取淘宝网商品信息 转载请注明出处 网购时经常会用到淘宝网 点我去淘宝但淘宝网上的商品琳琅满目,于是我参照中国大学 MOOC的代码写了一个爬取淘宝网商品信息的程序 代码如下: impor ...

  2. Python爬虫——4.6使用requests和正则表达式、随机代理爬取淘宝网商品信息

    # coding:utf-8 ''' 使用requests模块,使用代理,进行淘宝网商品信息的爬取 ''' # 引入需要的模块 import requests import random import ...

  3. Python爬虫模拟浏览器的headers、cookie,爬取淘宝网商品信息

    一. 淘宝商品信息定向爬虫 二. 爬虫基础:正则表达式 三. 淘宝页面查看与分析 四. 爬虫源码 一. 淘宝商品信息定向爬虫 注意淘宝的robots.txt不允许任何爬虫爬取,我们只在技术层面探讨这一 ...

  4. 【python爬虫】爬取淘宝网商品信息

    相信学了python爬虫,很多人都想爬取一些数据量比较大的网站,淘宝网就是一个很好的目标,其数据量大,而且种类繁多,而且难度不是很大,很适合初级学者进行爬取.下面是整个爬取过程: 第一步:构建访问的u ...

  5. 简单使用Python爬虫爬取淘宝网页商品信息

    最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...

  6. 爬虫(6)-使用selenium爬取淘宝天猫商品信息(价格,销售量等)

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

  7. Python + selenium 爬取淘宝网(销量,店铺名,价格等)

    import time from selenium import webdriver from lxml import etreedef Run(keywords, numPage):# 构造无头的C ...

  8. Python + selenium 爬取淘宝商品列表及商品评论 2021-08-26

    Python + selenium 爬取淘宝商品列表及商品评论[2021-08-26] 主要内容 登录淘宝 获取商品列表 获取评论信息 存入数据库 需要提醒 主要内容 通过python3.8+ sel ...

  9. python使用requests库爬取淘宝指定商品信息

    python使用requests库爬取淘宝指定商品信息 在搜索栏中输入商品 通过F12开发者工具抓包我们知道了商品信息的API,同时发现了商品数据都以json字符串的形式存储在返回的html内 解析u ...

最新文章

  1. windows 2003 活动目录的更改域名后缀技巧
  2. WGAN-div:默默无闻的WGAN填坑者 | 附开源代码
  3. C语言 数据结构 链表的增删查改
  4. python inspect.stack() 的简单使用
  5. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第26篇]描述NAF标量乘法算法
  6. 实践:在运维大数据这事上,Apache Kylin比ELK更擅长?
  7. 未指定的IO标准导致vivado生成bit文件报错
  8. 梯度下降、随机梯度下降、方差减小的梯度下降(matlab实现)
  9. JavaTPoint 数据库教程【翻译完成】
  10. 08-08 性能测试--分布式
  11. 速成pytorch学习——9天构建模型的3种方法
  12. 2017 科技大事件回顾:智能音箱大战、数据泄露于内贼
  13. socket心跳超时检测,快速处理新思路(适用于超大量TCP连接情况下)
  14. 如何保障大数据平台的安全性
  15. MSDN精选:Lambda 表达式(C# 编程指南)
  16. 复习,网课,视频回放,太慢怎么办,试试倍速播放吧 (无需下载)
  17. flash 围棋_中国卫视执白0.5目胜flash77
  18. 计算机黑屏时间,电脑开机黑屏时间长怎么办?Win10开机黑屏时间很久的解决方法...
  19. Keil(MDK)下用仿真器烧程序的同时烧写附加数据到SPI FLASH
  20. 10月12日棉花期货投资

热门文章

  1. XQN-vivado fix类型
  2. nul文件无法删除解决方法,巨好用
  3. 如何撰写《软件需求规格说明书》
  4. 抓取服务器作业文档不存在,易飞ERP客户问题集.doc
  5. WinCE下GPRS自动拨号软件(GPRS AutoDial)
  6. IMX6Q调试之 ----- DDR3 32位移植
  7. solr 过滤html标签,Solr
  8. oracle 弱口令扫描器,超级弱口令检查工具,检查SSH/FTP/MySQL/Oracle/SQLServer弱口令
  9. 神医“大数据” 甘做幕后英雄
  10. matlab课程报告锅炉水温在10,基于matlab的锅炉水温