Python怎么使用硒+ BeautifulSoup爬取淘宝搜索页

  介绍

这篇文章主要介绍Python怎么使用硒+ BeautifulSoup爬取淘宝搜索页,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

使用硒驱动chrome页面,获得淘宝信息并用BeautifulSoup分析得到结果。

使用硒时注意页面的加载判断,以及加载超时的异常处理。

import  json   import 再保险   得到bs4  import  BeautifulSoup   得到selenium  import  webdriver   得到selenium.common.exceptions  import  TimeoutException   得到selenium.webdriver.common.by  import    得到selenium.webdriver.support.ui  import  WebDriverWait   得到selenium.webdriver.support  import  expected_conditions  as 电子商务      时间=browser  webdriver.Chrome ()   #,浏览器需要多次使用,所以单独拿出来。设置一个最长的等待时间,等待目标加载完成   时间=wait  WebDriverWait(浏览器,10)         def 搜索(关键字):   ,#等容易出现加载时间长的问题,因此用尝试来捕捉异常   ,试一试:   ,browser.get (& # 39; https://www.taobao.com& # 39;)   ,#加载需要一定时间的,设置了等待时间,等待加载   ,#输入按钮的加载等待=,,input  wait.until (   #,才能设置加载目标,它是一个选择器,参数是需要选择方式和等待加载的内容   EC.presence_of_element_located才能((By.CSS_SELECTOR,“# q")), #,选择CSS选择器和选择内容   ,)   ,#提交按钮=,,submit  wait.until (   #才能,EC后面是选择条件,按钮的加载条件最好的是element_to_be_clickable,意思为元素可以点击的   EC.element_to_be_clickable才能((By.CSS_SELECTOR,“# J_TSearchForm 祝辞,div.search-button 祝辞,button"))   ,)   ,input.send_keys(关键字),#,send_keys对输入框输入内容   ,submit.click(), #,提交搜索内容,进入下一个页面   ,#等待页码元素加载完成,并返回最大页码数=,,total  wait.until (   EC.presence_of_element_located才能((By.CSS_SELECTOR,“# mainsrp-pager 祝辞,div 祝辞,div 祝辞,div 祝辞,div.total"))   ,)   ,#等待加载完成后获取信息   ,get_products ()   return  total.text   ,except  TimeoutException:   ,#超时后重新请求,因此递归调用   ,return 搜索()         def  next_page (page_number):   ,试一试:   ,#页码输入框和翻页按钮=,,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_number)   ,submit.click ()   ,#判断翻页成功   ,wait.until (   EC.text_to_be_present_in_element (By.CSS_SELECTOR,才能   ,,,,,& # 39;# mainsrp-pager 祝辞,div 祝辞,div 祝辞,div 祝辞,ul 祝辞,li.item.active 祝辞,跨度# 39;),   ,,,,,str (page_number)))   ,get_products ()   ,except  TimeoutException:   ,return  next_page (page_number)         def  get_products ():   ,#判断单个页面是否被加载出来   ,wait.until (EC.presence_of_element_located ((By.CSS_SELECTOR, & # 39; # mainsrp-itemlist  .items  .item& # 39;)))=,,html  browser.page_source  #,获取页面源代码,所有的   ,#使用BS进行分析=,,soup  BeautifulSoup (html、, & # 39; lxml # 39;)=,,items  soup.select (& # 39; # mainsrp-itemlist  .items  .item& # 39;)   ,for  item 拷贝项目:=,,image  item.select (& # 39; .pic  img # 39;) [0] [& # 39; data-src& # 39;】=,,price  item.select (& # 39; .price 强# 39;)[0]。text=,,deal  item.select (& # 39; .deal-cnt& # 39;) [0]。text (: 3)=,,title  item.select (& # 39; .title& # 39;) [0] .text.strip ()=,,shop  item.select (& # 39; .shop& # 39;) [0] .text.strip ()   ,位置=,item.select (& # 39; .location& # 39;) [0]。text   ,product =, {   & # 39;才能形象# 39;:,形象,   & # 39;才能价格# 39;:,价格,   & # 39;才能交易# 39;:,,   & # 39;才能夺冠# 39;:,标题,   & # 39;才能商店# 39;:,商店,   & # 39;才能位置# 39;:位置   ,}   ,save_text(产品),#,下载内容         def  save_text(产品):   ,#保存为txt文件,一个追加写模式,编码模式utf - 8   ,with 开放(& # 39;text.txt& # 39;,, & # 39;一个# 39;,,编码=& # 39;utf - 8 # 39;), as  f:   ,#使用JSON把字典转换为str格式,加换行符   ,f.write (json.dumps(产品,,ensure_ascii=False), +, & # 39; \ n # 39;)   ,f.close ()         def  main ():   ,#通过关键字在淘宝进行搜索=,total 搜索(& # 39;美食& # 39;)   ,#用正则提取页码数字   ,total =, int (re.compile (& # 39; (\ d +) & # 39;) .search(总).group (1))   ,#翻页   范围,for 小姐:拷贝(2,+ 1):,#,循环包含前,不包含尾   ,next_page(我)   ,browser.close ()         if  __name__ ==, & # 39; __main__ # 39;:   null

Python怎么使用硒+ BeautifulSoup爬取淘宝搜索页