圆月山庄资源网 Design By www.vgjia.com
使用Selenium驱动chrome页面,获得淘宝信息并用BeautifulSoup分析得到结果。
使用Selenium时注意页面的加载判断,以及加载超时的异常处理。
import json import re from bs4 import BeautifulSoup from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC browser = webdriver.Chrome() # 浏览器需要多次使用,所以单独拿出来。设置一个最长的等待时间,等待目标加载完成 wait = WebDriverWait(browser, 10) def search(keyword): # wait容易出现加载时间长的问题,因此用try来捕捉异常 try: browser.get('https://www.taobao.com') # 加载需要一定时间的,设置了等待时间,等待加载 # 输入按钮的加载等待 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(keyword) # 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 search() def next_page(page_number): try: # 页码输入框和翻页按钮 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, '#mainsrp-pager > div > div > div > ul > li.item.active > span'), 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, '#mainsrp-itemlist .items .item'))) html = browser.page_source # 获取页面源代码,所有的 # 使用BS进行分析 soup = BeautifulSoup(html, 'lxml') items = soup.select('#mainsrp-itemlist .items .item') for item in items: image = item.select('.pic .img')[0]['data-src'] price = item.select('.price strong')[0].text deal = item.select('.deal-cnt')[0].text[:-3] title = item.select('.title')[0].text.strip() shop = item.select('.shop')[0].text.strip() location = item.select('.location')[0].text product = { 'image': image, 'price': price, 'deal': deal, 'title': title, 'shop': shop, 'location': location } save_text(product) # 下载内容 def save_text(product): # 保存为txt文件,a追加写模式,编码模式utf-8 with open('text.txt', 'a', encoding='utf-8') as f: # 使用JSON把字典转换为str格式,加换行符 f.write(json.dumps(product, ensure_ascii=False) + '\n') f.close() def main(): # 通过关键字在淘宝进行搜索 total = search('美食') # 用正则提取页码数字 total = int(re.compile('(\d+)').search(total).group(1)) # 翻页 for i in range(2, total+1): # 循环包含前,不包含尾 next_page(i) browser.close() if __name__ == '__main__': main()
更多内容请参考专题《python爬取功能汇总》进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月07日
2024年11月07日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]