selenium自动化爬取小说网站(循环点击爬取)

前提条件:浏览器、浏览器版本对应的浏览器驱动,Chrome驱动国内下载地址http://npm.taobao.org/mirrors/chromedriver/

本文采用Chrome+chromedriver实现

from selenium import webdriver 
from selenium.webdriver.common.action_chains import ActionChains 
from lxml.etree import HTML 

driver = webdriver.Chrome() # 打开浏览器

driver.get('https://www.xbiquge.la/') # 打开页面

driver.find_element_by_xpath('//*[@id="hotcontent"]/div[1]/div[1]/dl/dt/a').click() # 用xpath寻找到对应的小说名称

a_list = driver.find_elements_by_xpath('//div[@id="list"]/dl/dd/a') # 用xpath寻找到小说所有的章节,如果用find_element_by_xpath时只能找到一个,不能找到所有
for a in range(len(a_list)): # 循环所有小说章节
    if (a >= 12) and ((a - 12) % 3 == 0): # 默认浏览器窗口只能显示12章,当超过时需要移动鼠标,将没在浏览器可视区域内的元素移动到可视区域
        ActionChains(driver).move_to_element(a_list[a]).perform() # 移动非可视区域内的元素移动到可视区域
        driver.implicitly_wait(20) # 只能等待,等待元素加载完成,如时间到后都没加载完成会不等待执行下面代码
    driver.execute_script("arguments[0].click();", a_list[a]) # 对找到的章节进行点检,也可用a_list[a].click(),但该方法有时会出现找到的元素无法点击
    inner_text = driver.page_source # 获取网页源码
    inner_html = HTML(inner_text) # 对网页源码构建xpath解析树
    txt = inner_html.xpath('//div[@id="content"]/text()') # 获取内容
    print(txt)
    driver.back() # 内容获取完成后返回到上一页面
    driver.implicitly_wait(20)
    a_list = driver.find_elements_by_xpath('//div[@id="list"]/dl/dd/a') # 词句虽上方已经出现,但这里不能省略,因为点击返回到上一页面时页面的元素已经发生改变,如果继续使用上一页面获取的元素,在此页面将会找不到,故需从新获取页面元素
driver.close() # 关闭浏览器

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Selenium 是一个用于自动化测试的工具,它可以通过模拟浏览器来访问网站并执行各种操作。使用 Selenium 可以编写脚本来自动点击标题并爬取详细内容。 具体来说,首先需要使用 Selenium 在浏览器中打开网站,然后使用 Selenium 提供的 API 来定位网页上的标题元素,并使用 `click()` 方法来点击标题。这样就可以打开详细内容的页面。然后,可以使用 Selenium 的 `find_element_by_*` 等方法来定位详细内容所在的元素,并使用 `text` 属性来获取元素中的文本内容。 下面是一个简单的示例代码,假设要爬取的网站为 "https://example.com": ``` from selenium import webdriver # 打开浏览器 driver = webdriver.Chrome() driver.get("https://example.com") # 定位标题元素并点击 title_element = driver.find_element_by_css_selector("h1.title") title_element.click() # 定位详细内容元素并获取文本 content_element = driver.find_element_by_css_selector("div.content") content = content_element.text # 关闭浏览器 driver.quit() # 打印爬取的内容 print(content) ``` 注意:爬取网站内容时应注意遵守网站的服务条款和隐私政策,并避免造成网站的负载过大。 ### 回答2: Selenium是一种自动化测试工具,它可以模拟浏览器的行为并进行网页的自动化操作。它可以打开网页、点击按钮、输入文字等,还可以获取网页中的内容并进行爬取。 使用Selenium来模拟浏览器自动点击标题并爬取详细内容的过程如下: 1. 首先,需要安装Selenium库,并下载相应的浏览器驱动,如Chrome驱动。 2. 接下来,引入Selenium库,并初始化浏览器驱动,如Chrome驱动:driver = webdriver.Chrome("驱动路径") 3. 打开目标网页:driver.get("网页URL") 4. 定位到标题元素,并模拟点击操作:title_element = driver.find_element_by_xpath("标题元素的XPath"),title_element.click() 5. 等待页面加载完成,可以使用time.sleep()来设置等待时间。 6. 接下来,可以使用Selenium的方法获取需要爬取的详细内容,如使用driver.find_element_by_xpath()定位到具体内容的元素,并使用text属性获取文本内容。 7. 将获取到的详细内容保存下来,可以使用文件操作相关的方法。 8. 进行下一轮的循环操作,翻页或点击下一个标题。 需要注意的是,使用Selenium进行爬取时需要注意网站的反爬机制,尽量避免对网站造成过大的访问负荷,可以设置合理的等待时间和间隔时间,以免被网站限制或封禁IP。 综上所述,使用Selenium来模拟浏览器自动点击标题并爬取详细内容的过程相对简单,但需要了解网页的结构和元素定位的方式,并合理处理可能遇到的反爬机制。同时,Selenium也可以结合其他库和工具进行更为复杂的爬虫任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值