介绍
这篇文章给大家分享的是有关Python怎么使用硒模块实现模拟浏览器抓取淘宝商品美食信息功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
具体如下:
import 再保险 得到selenium import  webdriver 得到selenium.webdriver.common.by import 得到selenium.webdriver.support.ui import  WebDriverWait 得到selenium.webdriver.support import  expected_conditions as 电子商务 得到selenium.common.exceptions import  TimeoutException 得到pyquery import  pyquery as  pq 得到bs4 import  BeautifulSoup 得到pymongo import  MongoClient 得到pymongo.errors import  PyMongoError 时间=url & # 39; http://www.taobao.com& # 39; 时间=KEYWORD & # 39;美食& # 39; #,monogdb配置信息 时间=MONGO_HOST “localhost" 时间=MONGO_DATABASE “taobao" 时间=MONGO_TABLE “meishi" 时间=client MongoClient(主机=MONGO_HOST) db =,客户机(MONGO_DATABASE) #,PhantomJS 命令行相关配置 #,参见http://phantomjs.org/api/command-line.html SERVICE_ARGS =,(& # 39;——磁盘高速缓存=真正的# 39;,,& # 39;——载入图片=假# 39;】=#,driver webdriver.Chrome(), #,有界面 时间=driver webdriver.PhantomJS (service_args=service_args), #,无界面 delay =10 时间=wait WebDriverWait(司机,,延迟) #,打印(& # 39;windows 大小# 39;,,driver.get_window_size ()) #,PhantomJs()的浏览器窗口很小,宽高只有400,*,300 driver.maximize_window(), #,窗口最大化,#,对于PhantomJS来说设置窗口大小很关键,如果不设置,经常会出现问题 #,driver.set_window_size(1920, 1080), #,设置浏览器窗口大小 #,模拟在淘宝网页中输入关键字搜索 def 搜索(): 打印才能(“准备搜索,% s", %,关键字) 尝试才能: ,,,driver.get (url) ,,,input_box =, wait.until ( ,,,,,EC.presence_of_element_located ((By.CSS_SELECTOR,,“输入# q")) ,,,) ,,,search_btn =, wait.until (EC.element_to_be_clickable ( ,,,,,(By.CSS_SELECTOR, & # 39; # J_TSearchForm 祝辞,div.search-button 祝辞,按钮# 39;))) ,,,input_box.send_keys(关键字) ,,,search_btn.click () ,,,total_page_str =, wait.until ( ,,,,,EC.presence_of_element_located ( ,,,,,,,(By.CSS_SELECTOR, & # 39; div.total& # 39;)))。text ,,,total_page_num =, int (re.search (“(\ d +)“,, total_page_str) .group (1)) ,,,item_list =, get_goods_by_beautifulsoup () ,,,save_to_mongodb (item_list) ,,,return total_page_num except 才能;TimeoutError: ,,,print(“搜索% s超时“,,关键字) ,,,print(“重新尝试搜索:,% s",,关键字) ,,,搜索() #,根据页码获取指定页数据,并将其保存到数据库中 def get_page (page_num): 打印才能(“正在获取第% d页数据“,%,page_num) 尝试才能: ,,,page_num_box =, wait.until ( ,,,,,EC.presence_of_element_located ( ,,,,,,,(By.CSS_SELECTOR,“div.form 祝辞,input"))) ,,,ok_btn =, wait.until (EC.element_to_be_clickable ( ,,,,,(By.CSS_SELECTOR, & # 39; div.form 祝辞,span.btn.J_Submit& # 39;))) ,,,page_num_box.clear () ,,,page_num_box.send_keys (page_num) ,,,ok_btn.click () ,,,wait.until ( ,,,,,EC.text_to_be_present_in_element ( ,,,,,,,(By.CSS_SELECTOR, ,,,,,,,,& # 39;li.item.active 祝辞,span.num& # 39;), ,,,,,,,str (page_num))) ,,,item_list =, get_goods_by_beautifulsoup () ,,,save_to_mongodb (item_list) except 才能;TimeoutException: ,,,print(“请求第% d页失败“,%,page_num) ,,,print(“尝试重新获取第% d页“,%,page_num) ,,,return get_page (page_num) def get_goods_by_pyquery (): & # 39;才能& # 39;& # 39; ,,通过pyquery库解析数据 获才能取商品的图片url、价格,标题,成交量,店铺名称,店铺位置 & # 39;才能& # 39;& # 39; wait.until才能(EC.presence_of_element_located ( ,,,(By.CSS_SELECTOR,,“# mainsrp-itemlist .items .item"))) html 才能=driver.page_source doc 才能=,pq (html) items 才能=,列表(doc (& # 39; # mainsrp-itemlist .items .item& # 39;) . items ()) null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullPython怎么使用硒模块实现模拟浏览器抓取淘宝商品美食信息功能