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

xiaoxiao2022-06-11  75

使用selenium抓取小说内容

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

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

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

我这个例子是为了获取这个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)

关闭浏览器

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()
转载请注明原文地址: https://www.6miu.com/read-4930326.html

最新回复(0)