当前位置:   article > 正文

使用爬虫python中的selenium模块抓取某小说网站某一章节中的JavaScript动态加载的内容_动态加载小说

动态加载小说

使用selenium抓取小说内容

  1. 创建一个browser对象,用chrome启动
    from selenium import webdriver
    直接启动会报错“ Message: ‘chromedriver’ executable needs to be in PATH”
    使用这个的前提要安装一个chromedriver.exe放在虚拟环境的python.exe同级目录下,去网上找与你的chrome对应的版本
    browser=webdriver.Chrome()

  2. 将小说的网址作为url传入 url="https://read.qidian.com/chapter/h_d238g_GvxREKyOHuaidQ2/8HFFj82ISQxOBDFlr9quQA2"
    用你的chromedriver打开url
    browser.get(url)

  3. 这个是显示获取到的所有内容
    print(browser.page_source)

  4. 我这个例子是为了获取这个div里面的内容,分析结果:
    browser.page_source中的内容发现小说内容实在一个div中,div的class="read-content j_readContent"于是我使用了content_div = browser.find_element_by_class_name('read-content j_readContent') 会报错InvalidSelectorError: Compound class names not permitted

    修改方案为:
    content_div = browser.find_element_by_css_selector("[class='read-content j_readContent']")

    我这个例子中小说内容是放在read-content j_readContent类中的,这个类中是有空格的,也就是引用了多个类。这时候就要用find_element_by_class_name方法,并且里面的内容也要做相应更改。
    这时候获取的content_div是一个定位,我的目的是获取这个div里面的内容,于是content=content_div.text

    获取到的结果是定位到这个类下,如果是定位ul,button,input之类的标签可以使用.click()或.send_keys(key)之类的方法
    显示小说内容:print(content)

  5. 关闭浏览器

    browser.close()

前提是要安装selenium模块,在项目下下载一个chromedriver.exe
下载chromediver.exe可以参考:

https://blog.csdn.net/morling05/article/details/81094151

完整代码如下:可以直接使用

from selenium import webdriver
browser=webdriver.Chrome()
url="https://read.qidian.com/chapter/pY0EIhqdtx6LTMDvzUJZaQ2/7l6tCDyWBS2aGfXRMrUjdw2"
browser.get(url)
content_div = browser.find_element_by_css_selector("[class='read-content j_readContent']").text
print(content_div)
browser.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号