Se cacher dans le lit et apprendre secrètement les reptiles (7) --- le frère sélénium à tête plate dans le monde des reptiles

bibliothèque de sélénium

1. Pourquoi utiliser du sélénium dans les crawlers ?

Lorsque vous explorez souvent des pages Web, vous constaterez que de nombreuses données que nous souhaitons obtenir ne peuvent pas être obtenues en analysant simplement le code HTML, car ces données sont chargées dynamiquement par d'autres moyens tels que le chargement AJAX ou le rendu js pour être présentées sur le pages de.

2. Qu'est-ce que la bibliothèque de sélénium ?

selenuim est un outil de test automatisé qui prend en charge plusieurs navigateurs tels que Firefox, Safari, Google Chrome, IE, Edge, etc. Dans le robot d'exploration, nous l'exécutons dans le navigateur, tout comme un véritable utilisateur opère, puis résolvons les problèmes soulevés ci-dessus , tout comme le frère à tête plate qui traite le serpent venimeux comme un bâton épicé ! Pour cette raison, de nombreux sites Web semblent engourdis par les robots d'exploration au sélénium et leurs membres sont faibles

3. Préparation avant d'utiliser le sélénium

①Installation de l'environnement en premier : entrez pip install selenium dans la fenêtre dos et appuyez sur Entrée

②Téléchargez un pilote de navigateur (l'éditeur utilise ici Google Chrome comme exemple) et entrez l'URL http://chromedriver.storage.googleapis.com/index.html pour télécharger la version correspondante du pilote

Vérifiez votre numéro de version de Google Chrome : Entrez cette URL (chrome://settings/help) dans Google Chrome et appuyez sur Entrée, puis rendez-vous sur la
insérez la description de l'image ici
page où vous venez de télécharger le pilote pour trouver la version correspondante,
insérez la description de l'image iciinsérez la description de l'image ici
téléchargez-la et décompressez l'exe inside Copiez le fichier d'exécution et collez une copie dans le répertoire racine de Google Chrome Collez une
insérez la description de l'image ici
copie dans le même répertoire où vous avez écrit le code du robot d'exploration Selenium
insérez la description de l'image ici

4. Connectez-vous à Taobao + évitez la détection

Certains grands sites Web détecteront spécifiquement si la demande de l'utilisateur au serveur est basée sur le sélénium, nous devons donc trouver un moyen d'éviter la détection du serveur

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author:HePengLi
# @Time:2021-03-28

from selenium import webdriver
import time


# 实例化一个浏览器对象(导入驱动器路径)
bro = webdriver.Chrome(executable_path='chromedriver.exe')

# 实现规避检测
script = '''
Object.defineProperty(navigator, 'webdriver', {
    get: () => undefined
})
'''
bro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    
    "source": script})

# 对指定url发请求
bro.get('https://www.taobao.com/')
# 模拟鼠标点击左上角的红字"亲,请登录"
bro.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()
# 录入账号
user = bro.find_element_by_xpath('//*[@id="fm-login-id"]')
user.send_keys('账号') # 此处填写淘宝账号
time.sleep(1)
# 录入密码
pwd = bro.find_element_by_xpath('//*[@id="fm-login-password"]')
pwd.send_keys('密码') # 此处填写淘宝账号的密码
time.sleep(1)
# 模拟鼠标点击登录按钮
bro.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()


time.sleep(30)
# 关闭浏览器
bro.quit()
5. Entrez automatiquement dans JD.com pour rechercher un iPhone et explorez les prix et les détails correspondants des trois premières pages + réalisez une interface sans tête + évitez la détection

Parfois, nous utilisons du sélénium pour explorer les données de la page, et nous ne voulons pas que l'interface du navigateur s'affiche, afin que nous puissions réaliser une exploration de l'interface sans tête

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author:HePengLi
# @Time:2021-03-28

from selenium import webdriver
from lxml import etree
import time
from selenium.webdriver.chrome.options import Options

url = 'https://www.jd.com'

# 实现无头化界面
option = Options()
option.add_argument('--headless')
option.add_argument('--disable-gpu')

bro = webdriver.Chrome(executable_path='chromedriver.exe', options=option)

# 实现规避检测
script = '''
Object.defineProperty(navigator, 'webdriver', {
    get: () => undefined
})
'''
bro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    
    "source": script})

bro.get(url)
time.sleep(2)
all_page = []
# 定位输入框
search_k = bro.find_element_by_class_name('text')
# 往搜索框中录入数据
search_k.send_keys('iphone')
time.sleep(1)
butt = bro.find_element_by_class_name('button')
butt.click()
time.sleep(2)

# 捕获当前页面的源码数据
# 当前页面全部加载完成后对应的数据
page_content = bro.page_source
all_page.append(page_content)
# 点击下一页
for i in range(2):
    next_page = bro.find_element_by_xpath('//*[@id="J_bottomPage"]/span[1]/a[9]')
    next_page.click()
    time.sleep(1)
    all_page.append(bro.page_source)

# print(all_page)

f = open('jd.txt', 'w', encoding='utf-8')
# 解析数据
for page in all_page:

    tree  =etree.HTML(page)
    li_list = tree.xpath('//*[@id="J_goodsList"]/ul/li')
    # print(li_list)

    for li in li_list:
        price = li.xpath('.//div[@class="p-price"]/strong//text()')
        # 处理数据
        if len(price) == 2:
            pri = price[0] + price[1]
        else:
            pri = price[1] + price[2]
        # print(pri)
        # print(price[1], price[2])

        content = li.xpath('.//div[@class="p-name p-name-type-2"]/a/em//text()')
        # print(content)
        # 处理数据
        if len(content) == 2:
            con = content[0] + content[1]
        elif len(content) == 3:
            con = content[0] + content[1] + content[2]
        else:
            con = content[0] + content[1] + content[2] + content[3]

        # print(pri+con)
        data = '价格:' + pri + '  ' +'具体详情:' + con
        # print(data)
        f.write(data + '\n')
print('\033[31;1mDownload over!!!\033[0m')

time.sleep(5)
bro.quit()

insérez la description de l'image ici
Rappel chaleureux : n'explorez pas facilement les prix des matières premières des grands sites Web tels que Jingdong Taobao, prenez du recul, même si vous explorez, ne soyez pas trop gourmand à la fois, sinon il est très facile d'obtenir une adresse IP bloquée.

Je suppose que tu aimes

Origine blog.csdn.net/hpl980342791/article/details/115282092
conseillé
Classement