python爬虫动态爬取需点击事件或下一步才可获取的内容

4 篇文章 0 订阅
1 篇文章 0 订阅

准备工作:

版本:PYTHON3.8.2 ide:sts ; 插件:pydev

或pycharm一套

安装相关驱动

pip3 install requests

pip3 install selenium

导包:

import time
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
import random

代码:

url="http://www.xxxx.com/yy/123"
headers={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55"
    }   #以字典的形式设置请求头,随便找个代理,处理反爬
resp=requests.get(url,headers=headers)

#print(resp.text)

#测试打印出HTML进入下一步

重点:

browser = webdriver.Chrome("X:\Program Files\Google\Chrome\Application\chromedriver.exe")

本机没有先查找本机版本
chrome://version/

下载对应版本号的chromedriver.exe 若没有选接近的
下载地址  http://chromedriver.storage.googleapis.com/index.html

注:过期方法
find_element_by_class,find_element_by_id……

新方法用法:
from selenium.webdriver.common.by import By
browser.find_element(by=By.ID, value='xxx')
browser.find_element(by=By.NAME, value='xxx')
browser.find_element(by=By.TAG_NAME, value='xxx')
browser.find_element(by=By.CLASS_NAME, value='xxx')
browser.find_element(by=By.LINK_TEXT, value='xxx')
browser.find_element(by=By.PARTIAL_LINK_TEXT, value='xxx')

正文try/catch块:

try:
    browser.get(url)
    while(True):
        div = browser.find_element(By.CLASS_NAME, "xxxClassName").text
        print(div)
        print("###################\n")

        objBtn=browser.find_elements(By.CLASS_NAME, "xxName")?
#         objBtn.click()

#目标按键区域灵活处理单个还是数组,若失效用下面语句
        browser.execute_script("arguments[0].click();", objBtn)

        #表太过份,拿了就走,建议N>=3
        r=random.randint(1,N)
        time.sleep(r)
finally:
    browser.close()

注:仅供学习交流,勿有妄念!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值