又是一年一度的教师节了。每逢教师节,大家都会发愁送什么礼物好呢?尤其对于理工科的男性来说,更是一个大问题。今天给大家分享一个使用Python爬取淘宝商品信息的项目,希望能为大家挑选礼物时提供参考。1.抓取目标本项目使用selenium抓取淘宝商品信息,使用selenium语法获取商品信息、价格、购买人数、图片、店铺名称,最后将获取到的信息存储到MongoDB中。2.准备工作在开始本项目之前,首先要确保正确安装了Chome浏览器,并配置了相应版本的ChromeDriver;另外需要正确安装Python的selenium库和pymongo库;最后,你必须在你的电脑上安装好MongoDB。3、以下是Windowsselenium下安装selenium、pymongo、MongoDB的方法:pipinstallselenium||pip3installseleniumpymongo:pipinstallpymongo||pip3installpymongoMongoDB:由于现在MongoDB的版本很多,所以3.0和4.0的安装方法有区别。我下载的是3.x版本的,安装配置比较简单,所以我也推荐大家安装使用3.x版本。下载链接:https://www.mongodb.com/download-center/communityChromeDriver下载链接:https://chromedriver.storage.googleapis.com/index.html这里下载的ChromeDriver版本应该和你的谷歌浏览器一样下载的版本必须一致,否则程序运行时会出错。下载后,将ChromeDriver.exe放在你Python安装路径下的Scripts中。4、提取单页商品信息获取每个元素,需要在selenium语法的find_element_by_xpath()的括号中填入每个元素的Xpath路径。获取商品信息的代码如下:'info':li.find_element_by_xpath('.//div[@class="rowrow-2title"]').text获取价格信息的代码如下:'price':li.find_element_by_xpath('.//a[@class="J_ClickStat"]').get_attribute('trace-price')+'yuan'获取付款人数的代码如下:'deal':li.find_element_by_xpath('.//div[@class="deal-cnt"]').text获取图片的代码如下:'image':li.find_element_by_xpath('.//div[@class="pic"]/a/img').get_attribute('src')获取店铺名称代码如下:'name':li.find_element_by_xpath('.//div[@class="shop"]/a/跨度[2]').text5.提取多页商品信息经过上面的分析,只抓取了一页商品信息,如果我们要获取多页信息,需要先定义一个提取总页数的函数,代码如下#提取总页数defsearch():driver.find_element_by_id('q').send_keys('python')driver.find_element_by_class_name("tb-bg").click()time.sleep(10)token=driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]').texttoken=int(re.compile('\d+').search(token).group(0))返回令牌6。页面下滑我们都知道selenium用于抓取动态渲染页面非常有效,当我们抓取页面信息时,需要模拟人来进行下拉、翻页等操作。对于下拉操作,有爬虫基础的可能会想到用selenium来模拟操作,但是在本项目中我们使用js语法来模拟下拉操作。这样做的好处是不容易被淘宝的反爬机制识别。代码如下defdrop_down():forxinrange(1,11,2):time.sleep(0.5)j=x/10#滑动位置js='document.documentElement.scrollTop=document.documentElement.scrollHeight*%f'%jdriver.execute_script(js)同样,我们也定义了一个模拟翻页的函数,代码如下defnext_page():token=search()num=0whilenum!=token-1:driver.get('https://s.taobao.com/search?q={}&s={}'.format(keyword,44*num))driver.implicitly_wait(10)#隐式等待num+=1drop_down()get_product()写页面时,需要注意的是,我在代码中添加了关键字,意思是你可以根据自己的需要爬取不同类型的商品信息。7.将数据保存到MongoDBdefsave_to_mongo(result):try:ifdb[MONGO_COLLECTION].insert(result):print('成功保存到MongoDB')exceptException:print('保存到MongoDB失败')8.结果显示这次总结一下使用selenium爬取淘宝商品信息。代码逻辑框架如下。由于本人能力有限,暂时只能实现这么多功能。接下来就是对存储在MongoDB中的数据进行分析,这样从数据爬取-数据存储-数据分析就是一个完整的过程。最后,祝所有的老师:教师节快乐!
