python百度点击器_python+selenium(模拟浏览器点击)爬取笔趣阁小说

代码如下:

from selenium import webdriver

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC

import time

from bs4 import BeautifulSoup

browser = webdriver.Chrome()

wait = WebDriverWait(browser,10)

def index_page(i):

"""

加载出小说的每一章内容

:param i: 小说的第 i 章

"""

if i == 1:

# 小说第一章的 Url 地址

url = "https://www.biqudu.com/31_31729/2212637.html"

browser.get(url)

# 等待 Content 节点加载出来

wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#content')))

# 调用 get_info() 方法对页面进行解析

get_info()

# 寻找下一章点击的节点

next_p = browser.find_elements(By.XPATH,('//div[@class="bottem2"]/a'))[2]

# 找到后停顿 30 秒

time.sleep(1)

# 点击按钮

next_p.click()

def get_info():

"""

提取每一章小说的章章节名及正文

:return:

"""

# 找到章节的名字

name = browser.find_element_by_css_selector('#wrapper > div.content_read > div > div.bookname > h1').text

print(name)

# 找到小说正文

content = browser.find_element_by_id('content').text

print(content)

# 将拿到的小说名和对应的正文内容写入 txt 文件中

with open('雪中悍刀行.txt','a',encoding="utf-8") as f:

f.write('\n'.join([name, content]))

f.write('\n\n')

def page_num():

"""

对小说的进行分析,得到小说总的章节数

:return: 章节数

"""

# 目标小说的 URL 地址

url = 'https://www.biqudu.com/0_807/'

browser = webdriver.Chrome()

browser.get(url)

html = browser.page_source

soup = BeautifulSoup(html, 'lxml')

dd = soup.find_all(name="dd")

page = len(dd)

browser.close()

return page

def main():

"""

b遍历小说的全部章节

:return:

"""

page = page_num()

print(page)

for i in range(1,page+1):

index_page(i)

if __name__ == '__main__':

main()

需要安装的依赖

pip install beautifulsoup4

pip install lxml

pip install selenium

chromedriver问题

到以下地址下载电脑上安装的chrome版本对应的driver

http://chromedriver.storage.googleapis.com/index.html

然后放到

1、\Google\Chrome\Application;

2、\Python36\Scripts这两个目录下,

再把1的路径添加到环境变量path里,接着测试一下

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

可以看到顺利打开了百度页面,测试完毕

不弹出chrome界面版

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC

import time

from bs4 import BeautifulSoup

chrome_options = Options()

chrome_options.add_argument('--headless')

chrome_options.add_argument('--disable-gpu')

browser = webdriver.Chrome(chrome_options=chrome_options)

# browser = webdriver.Chrome()

wait = WebDriverWait(browser,10)

def index_page(i):

"""

加载出小说的每一章内容

:param i: 小说的第 i 章

"""

if i == 1:

# 小说第一章的 Url 地址

url = "https://www.biqudu.com/31_31729/2212637.html"

browser.get(url)

# 等待 Content 节点加载出来

wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#content')))

# 调用 get_info() 方法对页面进行解析

get_info()

# 寻找下一章点击的节点

next_p = browser.find_elements(By.XPATH,('//div[@class="bottem2"]/a'))[2]

# 找到后停顿 30 秒

time.sleep(1)

# 点击按钮

next_p.click()

def get_info():

"""

提取每一章小说的章章节名及正文

:return:

"""

# 找到章节的名字

name = browser.find_element_by_css_selector('#wrapper > div.content_read > div > div.bookname > h1').text

print(name)

# 找到小说正文

content = browser.find_element_by_id('content').text

print(content)

# 将拿到的小说名和对应的正文内容写入 txt 文件中

with open('元尊.txt','a',encoding="utf-8") as f:

f.write('\n'.join([name, content]))

f.write('\n\n')

def page_num():

"""

对小说的进行分析,得到小说总的章节数

:return: 章节数

"""

# 目标小说的 URL 地址

url = 'https://www.biqudu.com/0_807/'

browser = webdriver.Chrome()

browser.get(url)

html = browser.page_source

soup = BeautifulSoup(html, 'lxml')

dd = soup.find_all(name="dd")

page = len(dd)

browser.close()

return page

def main():

"""

b遍历小说的全部章节

:return:

"""

page = 674

print(page)

for i in range(1,page+1):

index_page(i)

if __name__ == '__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值