爬虫——ajax和selenuim总结

为什么要写这个博客呢,这个代码前面其实都有,就是结束了。明天搞个qq登录,这个就结束了。

当然也会更新小说爬取,和百度翻译,百度小姐姐的爬取,的对比爬取。总结嘛!!!加油!!!

============================ajax====================================

,有时爬不到东西,可能是经过Ajax加载的数据,不是原始的HTML文档。

这样我们就要来模拟Ajax请求。

上实例:比如说我前几篇的,异步社区的爬取。

    response = requests.get(url,headers=hearder,params=params).text

用的不光有url,headers,还有params,params中是对页数等的请求。

得到的是字典样子的数据,但是是字符串。

这就要用到json.loads(),来把字符串类型,转化为python的字典类型了 

-----------------得到字典就是取值了。

同一个网站不用,params,就不会请求成功。



selenuim---用浏览器实现自动化(很强大的反爬工具)。

    有些网站可能会有JavaScript动态加载数据,这种情况下,简单的获取初始HTML可能无法获取

这时就是用selenuim来模拟浏览器。


来复习一便selenuim自动化吧!!!-下一篇就是登录自动qq(目标)

第一篇代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Edge()

# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('https://www.baidu.com')
#寻找(异常的捕获)
try:
    element = wd.find_element(By.ID,'kw')
    element.send_keys('通讯')

    caozuo = wd.find_element(By.ID,'su')
    caozuo.click()#点击
    
    wd.quit()#退出
    input('等待回车键结束程序')

except NoSuchElementException:
    print('不存在')


1.导库-最后一个是异常

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

2.这里try是如果抛出异常,就咋咋咋!

3. wd.find-element(),caozuo.click()-------------------------很重要


                      ---------------------二-------------------------------

第二篇代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

url = 'https://cdn2.byhy.net/files/selenium/sample1.html'
# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Edge()

# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get(url)
#根据ID查找
id_element = wd.find_element(By.ID,'searchtext')
id_element.send_keys('haha')
input("jix1")
#根据class的名字查找++
elements = wd.find_elements(By.CLASS_NAME,'plant')
for i in elements:
    print(i.text)
#根据标签查找
all_elements = wd.find_elements(By.TAG_NAME,'span')
for i in all_elements:
    print(i.text)
#退出
wd.quit()




很简单和第一个差不多,就是变成了,找一个(element),变成了找所有(elements)


 ----------------------------------三-----------------------------------------------

第三篇代码:

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

url = 'https://im.qq.com/index/'


wd = webdriver.Edge()
wd.implicitly_wait(10)

wd.get(url)

elements = wd.find_element(By.NAME,'im.qq.com.login')
elements.click()
time.sleep(1)
element =  wd.find_element(By.ID,'bottom_qlogin')
time.sleep(1)
element2 = wd.find_element(By.ID,'switcher_plogin')
time.sleep(1)
element2.click()
time.sleep(2)
wd.quit()






这个也没啥就是-----wd.implicitly_wait(10)------因为爬取要时间,相当一个等待的代码。


------------------------------四-------------------------------

第四篇代码:

frame窗口转换

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

url = "https://cdn2.byhy.net/files/selenium/sample2.html"
wd = webdriver.Edge()
wd.implicitly_wait(10)

wd.get(url)
#切换到内frame里面
wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'[src="sample1.html"]'))
elements = wd.find_elements(By.CSS_SELECTOR,'.plant')
for i in elements:
    print(i.get_attribute('outerHTML'))
#切换到外部
wd.switch_to.default_content()
wd.find_element(By.CSS_SELECTOR,'#outerbutton')
print(wd.find_element(By.CSS_SELECTOR,'#outerbutton').get_attribute('outerHTML'))
wd.find_element(By.CSS_SELECTOR,'#outerbutton').click()
time.sleep(2)
wd.quit()
input("jj")

这个很重要,加入了CSS,CSS也就是选择器,很强大。

1.wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'[src="sample1.html"]'))

找么有‘ID’或者‘Class’的,并且进入frame窗口

2.print(i.get_attribute('outerHTML'))——这个将会打印标签在HTML是什么样的,打印出来就是什么样的

3.wd.switch_to.default_content()————返回到外部窗口


-------------------------------------------五-------------------------------------------

第五篇代码:

浏览器窗口的变化

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

url = "https://cdn2.byhy.net/files/selenium/sample3.html"
wd = webdriver.Edge()
wd.implicitly_wait(10)

wd.get(url)

element = wd.find_element(By.CSS_SELECTOR,'a')

print(element.get_attribute('outerHTML'))
element.click()
#存储下来
mainWindow = wd.current_window_handle

time.sleep(5)

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    print(wd.title)
    if '必应' in wd.title:
        break

wd.find_element(By.CSS_SELECTOR,'#sb_form_q').send_keys("hahahah")
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#search_icon').click()

time.sleep(5)
#返回窗口
wd.switch_to.window(mainWindow)

wd.find_element(By.CSS_SELECTOR,'button').click()
wd.find_element(By.CSS_SELECTOR,'button').click()
time.sleep(5)

wd.quit()

1.mainWindow = wd.current_window_handle-这个很有必要,就是存储当前窗口,以便返回。

2.

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    print(wd.title)
    if '必应' in wd.title:
        break

在目前浏览器窗口找,有必应两个字的窗口。并转到


为什么要写这个博客呢,这个代码前面其实都有,就是结束了。明天搞个qq登录,这个就结束了。

当然也会更新小说爬取,和百度翻译,百度小姐姐的爬取,的对比爬取。总结嘛!!!加油!!!


相关推荐

  1. 二、python selenium爬虫

    2024-02-14 11:08:01       44 阅读
  2. python selenium 爬虫教程

    2024-02-14 11:08:01       40 阅读
  3. python爬虫之POSTGET方法总结(6)

    2024-02-14 11:08:01       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-14 11:08:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-14 11:08:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-14 11:08:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-14 11:08:01       18 阅读

热门阅读

  1. free pascal:fpwebview 组件简单易用

    2024-02-14 11:08:01       35 阅读
  2. QT自定义信号和槽

    2024-02-14 11:08:01       29 阅读
  3. 蓝桥杯每日一题----素数筛

    2024-02-14 11:08:01       30 阅读
  4. Android:自定义控件

    2024-02-14 11:08:01       28 阅读
  5. 算法笔记P67

    2024-02-14 11:08:01       28 阅读
  6. 兵棋推演是离散问题,深度学习是连续问题

    2024-02-14 11:08:01       31 阅读
  7. Gateway中Spring Security6统一处理CORS

    2024-02-14 11:08:01       29 阅读
  8. 第一章 文档数据库 (DocDB) 简介

    2024-02-14 11:08:01       29 阅读
  9. Ajax 入门

    2024-02-14 11:08:01       31 阅读
  10. 796. 子矩阵的和

    2024-02-14 11:08:01       34 阅读
  11. λ-矩阵的多项式展开

    2024-02-14 11:08:01       30 阅读
  12. 数据库第三章作业-SQL语言

    2024-02-14 11:08:01       29 阅读
  13. 局部加权回归

    2024-02-14 11:08:01       30 阅读