python爬虫小说网selenium反爬器

发布于:2022-11-29 ⋅ 阅读:(253) ⋅ 点赞:(0)

 关于爬虫的知识正在储备中.........

这是我目前知道最有效反爬的一个工具,能够模拟出人的行为,让服务器认为我是真人操作,但是依旧有某些网站能够限制你的ip访问,这时候就需要你去开代理了,方式有很多,比如51ip,虚拟机挂ip,或者其他渠道,这里我就不一一穷举了,开始正题部分吧

1、我用的网站是小说阅读网(

https://www.readnovel.com/chapter/22109307301720304/63257109026285020

)【最简单的方式,找自己喜欢的文章,后续我会继续学习如何固定爬取想到的数量,理论到了,实践就靠逻辑!】第一步,当然是导入你的小工具了,这里由于网站的防备简单,不需要太复杂的反爬,只用到这三个库就好

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

2、开始启动谷歌驱动,注入URL,驱动器的话大家可以根据自己浏览器版本找到对应的版本驱动,一般浏览器都有相对应的驱动(谷歌,Edge,火狐...........)

'''实例化浏览器'''
drive=webdriver.Chrome()
url="https://www.readnovel.com/chapter/22109307301720304/63257109026285020"
'''注入url'''
drive.get(url)

3、由于我要爬取的这本小说有55页,因此我用了55循环,当然,这里教的是最笨,但却是最安全可靠的方法!!!注意,这里有俩个重要的知识点,1,为了防止页面在加载的时候会出现第二个页面,也就是在跳转页面的时候有第二个页面生成,所以这里很小心的用了drive.switch_to.window(drive.window_handles[-1])方法,保证每次都是在最后一个页面进行,因为这样才能确保元素定位得到,当然,同时也要记得刷新和等待下页面元素加载成功refresh和time.sleep()方法,中间的minimize_window方法是指最小化窗口,这边每次爬完一章小说后会重启窗口,为了满满的技术感我们就浅浅的每次最小化它。当然,也有方法能够让他一直自动最小化窗口运行,大家可以去其他博主那里取取经验。

for i in range(1,55):
    drive.switch_to.window(drive.window_handles[-1])
    drive.refresh()
    drive.minimize_window()
    time.sleep(2)
    if i==1:
        ls=drive.find_element(By.CSS_SELECTOR,".book-cover-wrap h1")
    else :
        ls = drive.find_element(By.CSS_SELECTOR, ".main-text-wrap .text-head h1")
    lt=drive.find_elements(By.CSS_SELECTOR,".main-text-wrap .read-content p")
    with open("小说爬取第" + str(i) + "章.txt", "w")as f:
        for k in lt:
            f.write(str(k.text)+"\n")
    print("第"+str(i)+"章爬取成功")
    js = 'window.scrollTo(0,10000)'
    drive.execute_script(js)
    time.sleep(1)

    drive.find_element(By.XPATH, '//*[@class="read-main-wrap font-family01"]/div[2]/a[3]').click()

4、我这次的元素定位基本上都是用css_selector方法定位的,定位的方法有很多种,大家可以多去了解下。(xpath,css,id,class,class_name),记住,多了解,多操作,会给你很多条路,别让自己的路变窄。话说回来,咱是模拟人物操作爬取,那页面也有下拉框,这时候我们的js语言就参与进来了

下拉操作

js = 'window.scrollTo(0,10000)'
drive.execute_script(js)
##就这俩玩意,绝对够用,这里的10000指的就是百分百能定位到底部了,如果你发现不能
##那就继续加吧,反之,根据你的需求修改大小。记住,是用引号包装的,别忘了

5、随之的就是跟换页面部分了,这里找到跳转去下一页的元素位置,一般都是(下一张)。

drive.find_element(By.XPATH, '//*[@class="read-main-wrap font-family01"]/div[2]/a[3]').click()

总结:网页爬虫的核心:找到元素,定位元素,获取元素位置,取出元素。当然,ip代理能有就有是最好的,还有就是格式的转化,如果爬取格式的内容话会涉及到json,美丽汤(beautifulsoup库!)(往往最朴素的代码更能融入与人们的心~接触python刚一年,愿同行勿喷!!!)

既然你来到了csdn那就是有着求知的目的,记住,别想着自己让自己放松,大学生们就应该为自己的后路着想,如果你是富二代,家人已经给你定好岗位了,当我没说。别听别人说外面的工作多么简单,自己略知一二找工作就没问题。记住,人上有人,物从优择,做任何事情别让嘴巴战胜了你的实际操作能力,少说话,多做实事;别让以后的你怨恨现在正放松的自己!!!

分享给大家我在某本书上看到同时也很喜欢的一句话:“在需要尽全力的时候偷懒,看到别人努力又很没有安全感,最后带着这种焦虑继续假模假样地放松自己,不要成为这样的人,很丢脸。” 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到