赞
踩
使用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可以参考:
完整代码如下:可以直接使用
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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。