爬取京东 百度 知乎
爬取京东数据商品(单页)
关于延时等待
有时候我们在访问网站数据的时候 加载需要一定的时间 没有加载完全的情况下代码极其容易报错 此时需要我们的等待页面数据加载完毕 如何精确等待?
bro.implicitly_wait(10) #延时等待十秒(对于正常网速十秒足够)
关于控制浏览器鼠标滚轮下滑
window.document.body.scrollHeight # 当前页面屏幕高度 window.scrollTo # 滚动到指定位置
import time #导入时间模块 from selenium import webdriver # 导入自动控制浏览器 from selenium.webdriver.common.keys import Keys #导入键盘模拟输入 from openpyxl import Workbook wb=Workbook() wb1=wb.create_sheet('京东商品数据',0) wb1.append(['商品图','价格','详情','链接','销量','店铺名','店铺链接']) bro=webdriver.Chrome() #使用谷歌浏览器打开 bro.get('https://www.jd.com/') #打开京东首页 bro.implicitly_wait(10) #延时等待 加载完成即可执行命令 key=bro.find_element_by_id('key') #寻找输入栏所对应的标签找id字段 choice=input('请输入需要搜索的内容') key.send_keys(choice) #输入搜索内容 key.send_keys(Keys.ENTER) # 按下enter键进入商品页 for i in range(0,12000,1000): # 使用js代码控制鼠标滚轮向下移动, 总共长度为8000 每一次滚1000的长度 并且延时等待0.5 bro.execute_script('window.scrollTo(0,%s)'%i) time.sleep(0.5) list=bro.find_elements_by_css_selector('li.gl-item') #获取整个下拉完成后的页面li标签 # print(len(list)) for li in list: #循环获取list中的li标签 img_list=li.find_element_by_css_selector('div.p-img a img') #获取图片标签 img_src=img_list.get_attribute('src') #获取图片标签内部属性 """内部src属性内部存在懒加载现象""" if not img_src: # 懒加载的图片标签内部需加上https:构成图片链接 img_src='https:'+img_list.get_attribute('data-lazy-img') # print(img_src) price_list=li.find_element_by_css_selector('div.p-price strong') # 获取价格所在标签 price=price_list.text #获取价格标签内部的文本内容 src_list=li.find_element_by_css_selector('div.p-name a em') #获取商品描述所在标签 src=src_list.text #获取商品描述标签内部的文本内容 link_list=li.find_element_by_css_selector('div.p-name a') #获取商品链接所在标签 link=link_list.get_attribute('href') #获取标签内部href属性 commit_list=li.find_element_by_css_selector('div.p-commit strong a') #获取评论所在标签 commit=commit_list.text# 获取评论标签内部的文本内容 shop_list=li.find_element_by_css_selector('div.p-shop span a') #获取店铺名所在标签 shop=shop_list.text# 获取店铺名所在标签中的文本内容 shop_link=li.find_element_by_css_selector('div.p-shop span a') #获取店铺链接所在的标签 shoplink=shop_link.get_attribute('href') # 获取标签内部的店铺链接 wb1.append([img_src,price,src,link,commit,shop,shoplink]) wb.save('京东商品.xlsx') bro.close()
知乎登录案例
1.电脑端知乎不登陆是无法直接访问首页的 2.network监控发送登录请求体数据为加密 加密的代码关键字:encrypt 解密的代码关键字:decrypt 3.搜索关键字encrypt通过断点调试查看到内部真实数据 client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password×tamp=1566371889615&source=com.zhihu.web&signature=849409fe69f76b28a7ebfa95f0acc784d7c812bf&username=+8618896530856&password=dadasdasdas&captcha=nngt&lang=en&utm_source=&ref_source=other_https://www.zhihu.com/signin?next=%2F
from selenium import webdriver import time # 1.使用谷歌浏览器访问百度首页 bro = webdriver.Chrome() bro.get('https://www.baidu.com/') # 2.查找页面上的登录按钮 login_tag = bro.find_element_by_id('s-top-loginbtn') # 3.点击登录按钮 time.sleep(0.5) login_tag.click() '''延迟等待:页面数据有时候需要时间加载 但是代码不会自动等''' time.sleep(3) # 4.查找点击短信登录按钮 message_tag = bro.find_element_by_id('TANGRAM__PSP_11__changeSmsCodeItem') message_tag.click() time.sleep(0.5) # 5.查找手机号输入框并填写内容 phone_tag = bro.find_element_by_id('TANGRAM__PSP_11__smsPhone') phone_tag.send_keys(13585515712) time.sleep(0.5) # 6.查找发送验证码按钮并点击 btn_tag = bro.find_element_by_id('TANGRAM__PSP_11__smsTimer') btn_tag.click() time.sleep(0.5) # 7.查找并点击登录按钮 submit_tag = bro.find_element_by_id('TANGRAM__PSP_11__smsSubmit') submit_tag.click() time.sleep(0.5) bro.close()

浙公网安备 33010602011771号