我是靠谱客的博主 虚拟日记本,最近开发中收集的这篇文章主要介绍利用Selenium爬取淘宝商品信息,保存到本地的text文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Selenium爬取淘宝

看了崔庆才写的用Selenium爬取淘宝商品,但是他最后保存的是MongoDB,很多同学的电脑里面并没有安装这个,或者大家都对这个不太熟悉,所以,我们这边给重新保存到text文件格式。

崔老师的保存到MongoDB的程序:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from urllib.parse import quote
from pyquery import PyQuery as pq
from multiprocessing import Pool
import pymongo
browser=webdriver.Chrome()
wait=WebDriverWait(browser,10)
KEYWORD='ipad'
MONGO_URL='localhost'
MONGO_DB='TAOBAO'
MONGO_COLLECTION='products'
client=pymongo.MongoClient(MONGO_URL)
db=client[MONGO_DB]
def index_page(page):
#定义一个获取索引页信息的函数
print('正在爬取第',page,'页')
try:
url='https://s.taobao.com/search?q='+quote(KEYWORD)
browser.get(url)
if page>1:
input=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > div.form > input')))
submit=wait.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)
submit.click()
wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > ul > li.item.active > span'),str(page)))
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'.m-itemlist .items .item')))
get_products()
except TimeoutException:
index_page(page)
def get_products():
#解析获取到的索引页的信息,将商品的信息从中提取出来
html=browser.page_source
doc=pq(html)
items=doc('#mainsrp-itemlist .items .item').items()
for item in items:
product= {
'image': item.find('.pic .img').attr('data-src'),
'price': item.find('.price').text(),
'deal': item.find('.deal-cnt').text(),
'title': item.find('.title').text(),
'shop': item.find('.shop').text(),
'location': item.find('.location').text()
}
print(product)
save_to_mongo(product)
def save_to_mongo(result):
#定义一个存储到MONGODB数据库的方法
try:
if db[MONGO_COLLECTION].insert(result):
print('存储到Mongodb成功!')
except Exception:
print('存储到Mongodb失败!')
MAX_PAGE=100
def main():
#实现页码的遍历
for i in range(1,MAX_PAGE+1):
index_page(i)
if __name__=='__main__':
main()

我们自己的 保存到text文件大程序:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from urllib.parse import quote
from pyquery import PyQuery as pq
from multiprocessing import Pool
import json
browser=webdriver.Chrome()
wait=WebDriverWait(browser,10)
KEYWORD='ipad'
def index_page(page):
#定义一个获取索引页信息的函数
print('正在爬取第',page,'页')
try:
url='https://s.taobao.com/search?q='+quote(KEYWORD)
browser.get(url)
if page>1:
#获取页码输入框
input=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,
'#mainsrp-pager > div > div > div > div.form > input')))
#获取“确定”按钮
submit=wait.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)
submit.click()
#检测页码是不是我们传过来的页码
wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,
'#mainsrp-pager > div > div > div > ul > li.item.active > span'),str(page)))
#等待商品加载成功
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'.m-itemlist .items .item')))
get_products()
except TimeoutException:
index_page(page)
def get_products():
#解析获取到的索引页的信息,将商品的信息从中提取出来
html=browser.page_source
doc=pq(html)
items=doc('#mainsrp-itemlist .items .item').items()
for item in items:
product= {
'image': item.find('.pic .img').attr('data-src'),
'price': item.find('.price').text(),
'deal': item.find('.deal-cnt').text(),
'title': item.find('.title').text(),
'shop': item.find('.shop').text(),
'location': item.find('.location').text()
}
print(product)
save_to_file(product)
def save_to_file(result):
#存储到text文件中
with open('result.text','a',encoding='utf-8') as f:
f.write(json.dumps(result,ensure_ascii=False)+'n')
print('存储到text成功!')
MAX_PAGE=100
def main():
#实现页码的遍历
for i in range(1,MAX_PAGE+1):
index_page(i)
if __name__=='__main__':
main()

最后

以上就是虚拟日记本为你收集整理的利用Selenium爬取淘宝商品信息,保存到本地的text文件的全部内容,希望文章能够帮你解决利用Selenium爬取淘宝商品信息,保存到本地的text文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部