自动百度登录、延时获取数据、京东数据和知乎案例思路

自动百度登录、延时获取数据、京东数据和知乎案例思路

  • 自动百度登录
  • 延时获取数据
  • 京东数据获取
  • 知乎案例思路

自动百度登录

思路

1.获取登录链接,向链接输入指令

2.获取用户和密码输入框的位置,输入信息

3.输入登录信息后,获取登陆键位置,点击登录键,完成登录

'''
注意:
完成动作后需要有缓冲时间,
不然有可能被识别出是爬虫
'''

代码执行

# 调用模块
from selenium import webdriver
from selenium.webdriver.common.keys import Keys  # 键盘按键操作
from selenium.webdriver import ActionChains
import time

# 构造对象
bro = webdriver.Chrome('D:\python3.6.8\Scripts\chromedriver.exe')
# 打开百度登录
bro.get('https://www.baidu.com')
time.sleep(1)
# 查找登录按钮
bro.find_element_by_xpath('//*[@id="s-top-loginbtn"]').click()
time.sleep(1)
# 查找用户名框,输入文本内容
bro.find_element_by_id('TANGRAM__PSP_11__userName').send_keys('11111')
time.sleep(1)
# 查找密码框
bro.find_element_by_id('TANGRAM__PSP_11__password').send_keys('11111')
time.sleep(1)
# 登录键
bro.find_element_by_xpath('//*[@id="TANGRAM__PSP_11__submit"]').click()
time.sleep(1)
# 结束驱动器
bro.quit()

 

延时获取数据

为什么需要延时

  有的时候在访问网站数据的时候,网页数据加载需要一段的时间,如果没有加载完全的情况下,运行代码极其容易报错,此时需要我们的等待页面数据加载完毕,再执行代码

代码

# 延迟最大时间10秒
bro.implicitly_wait(10)

 

京东数据

思路

1.使用selenium进入网页找到搜索框标签,输入内容
2.进入商品页面中,先执行滚轮操作,加载所有数据
3.图片数据存在懒加载现象,要进行特俗操作
4.数据爬取,可以通过循环来获取
5.使用selenuim寻找下一页只需要点击按钮即可
    将单页数据代码分装成一个函数 之后可以循环爬取多页
6.数据可持续化,将数据写入表格或文本

准备工作

获取网页长度,滚轮划底,输入js代码:

window.document.body.scrollHeight

代码执行

# 调用模块
from selenium import webdriver
from selenium.webdriver.common.keys import Keys  # 键盘按键操作
import time

# 创建对象
bro=webdriver.Chrome("D:\python3.6.8\Scripts\chromedriver.exe")
# 打开京东链接
bro.get('https://www.jd.com/')
# 演示等待
bro.implicitly_wait(10)
# 寻找搜索框ID
input_tag=bro.find_element_by_id('key')
# 输入文本内容
input_tag.send_keys('显卡')
# 设置延迟
time.sleep(0.5)
# 点击搜索
input_tag.send_keys(Keys.ENTER)
# 设置延迟
time.sleep(0.5)

滚动页面加载数据

# 滚动加载数据,数据源于网页长度
for i in range(0, 11810, 1000):
    # 执行js语句,实现滚轮滑动
    bro.execute_script('window.scrollTo(0,%s)'%i)
    # 设置延迟,
    time.sleep(0.3)
# 获取所有商品数据
all_thing= bro.find_elements_by_css_selector('li.gl-item')
# 获取具体商品信息
for li in all_thing:
    # 获取图标链接
    img_src=bro.find_element_by_css_selector('div.p-img img').get_attribute('src')
    print(img_src)
    break

    # img的src属性存在懒加载现象,src没有就在data-lazy—img属性下
    # 如果src不存在
    if not img_src:
        img_src = 'https' + bro.find_element_by_css_selector('div.p-img img').get_attribute('data-lazy-img')
    # 商品名
    thing_name=li.find_element_by_css_selector('div.p-name a em').text
    # 商品价格
    thing_price=li.find_element_by_css_selector('div.p-price strong').text
    # 商品连接
    thing_link=li.find_element_by_css_selector('div.p-name a').get_attribute('href')
    # 销量
    thing_pay=li.find_element_by_css_selector('div.p-commit strong a').text
    # 店名
    shop_name=li.find_element_by_css_selector('div.p-shop span a').text
    # 电商连接
    shop_link=li.find_element_by_css_selector('div.p-shop span a').get_attribute('href')
    # 输出结果
    print('''
    商品名:%s
    商品价格:%s
    商品图片连接:%s
    商品链接:%s
    店名:%s
    店铺链接:%s    
    销量:%s
    '''%(thing_name,thing_price,img_src,thing_link,shop_name,shop_link,thing_pay))
    break

实验只输出一个

数据写入,在此使用openpyxl插件

from openpyxl import Workbook

# 创建表格对象
wb = Workbook()
# 创建工作簿
wb1=wb.create_sheet('商品',0)
# 插入表头
wb1.append(["商品名","商品价格","商品图片连接","商品链接","店名","店铺链接","销量"])
# 滚动加载数据,数据源于网页长度
for i in range(0, 11810, 1000):
    wb1.append([thing_name,thing_price,img_src,thing_link,shop_name,shop_link,thing_pay])
    break
wb.save(r'商品.xlsx')

 

 

知乎登录案例

思路

1.电脑端登录知乎需要用户名与密码

2.人工输入用户信息,并滑动验证码后,查看network,查找请求体获取加密信息
加密的代码关键字:encrypt
解密的代码关键字:decrypt

3.在所network的source的top文件中,搜索所有文件中的encrypt

4.在多条数据中搜索正确的数据获取加密数据

5.在js代码出打断点,运行网页就可以获取加密数据

6.之后将该数据进行解析,并对数据进行分析,处理完之后signature为加密数据,需要模块解密
7.解析出数据后,获取cookie请求头,请求体,发送请求获取数据

返回目录

posted @ 2021-10-01 09:18  微纯册  阅读(183)  评论(0)    收藏  举报