python爬取奇趣網小說

2021-10-23 09:24:46 字數 3776 閱讀 6064

#在爬蟲爬取的過程中,需要判斷傳入的鏈結對應的是靜態網頁還是動態網頁,然後選擇不同的**對其進行爬取

#因為靜態爬取比較快,所以當網頁為靜態網頁時就不需要呼叫動態爬取的**了,

from bs4 import beautifulsoup,unicodedammit

from urllib.request import request,urlopen

from selenium import webdriver

from selenium.webdriver.chrome.options import options

xiao_shuo_ming=

input

("請輸入**名:"

)chrome_options = options(

)#chrome_options.add_argument('--headless')

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

chrome_options.add_argument(

)driver= webdriver.chrome(options=chrome_options)

#設定隱性等待時間1.5秒,即最長等待1.5秒

driver.implicitly_wait(

1.5)

driver.get(

"")#url=driver.find_element_by_xpath('//*[@id="j-catalogwrap"]/div[1]/div/ul/li[7]/a')

#print(url,type(url))

#得到的html即為網頁的html文字

#html=driver.page_source

#print(html)

#找到搜尋框

shu_ru=driver.find_element_by_xpath(

'//*[@id="keyword"]'

)#輸入要搜尋的內容

shu_ru.send_keys(xiao_shuo_ming)

driver.find_element_by_xpath(

).click(

)#driver.find_element_by_xpath('//*[@id="result-list"]/div/ul/li[1]/div[3]/p/a[1]').click()

result=driver.find_elements_by_xpath(

'//div[@class="result-item result-game-item"]/div[2]/h3/a'

)nu=

len(result)

print

("搜尋得到的**為:"

)for n in

range

(nu)

: result[n]

=result[n]

.get_attribute(

'title'

)print

(result[n]

)xiao_shuo=

input

("請輸入列表中的任意一本書的全名:"

)for m in

range

(nu)

:if xiao_shuo==result[m]

: url = driver.find_elements_by_xpath(

'//div[@class="result-item result-game-item"]/div[2]/h3/a'

)[m]

.get_attribute(

'href'

)break

if m==nu:

print

('未找到鏈結!'

)print

(, url)

#print(result.extract())

driver.implicitly_wait(5)

#url=driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/h3/a').get_attribute('href')

#print(url)

headers=

re=request(url,headers=headers)

data=urlopen(re)

data=data.read(

)dammit=unicodedammit(data,

['gbk'

,'utf-8'])

data=dammit.unicode_markup

soup=beautifulsoup(data,

'lxml'

)zhang_jie_s=soup.select(

'#list > dl > dd > a'

)num=

len(zhang_jie_s)

#建立乙個列表用於存放章節的標題

zhang_jie_name_s=

for i in

range

(num)

:# 獲取章節的標題

zhang_jie_name = zhang_jie_s[i]

.get_text(

)#將其加入到列表中

#獲取每乙個章節的鏈結,並拼接成完整的鏈結

zhang_jie_s[i]

=""+zhang_jie_s[i]

['href'

]#到此已經將全部章節的鏈結和每一章的標題爬取下來了

#print(zhang_jie_name_s)

#print(len(zhang_jie_name_s))

defdownload

(url)

:global k

headers =

re = request(url, headers=headers)

data = urlopen(re)

data = data.read(

) data = data.decode(

) soup = beautifulsoup(data,

'lxml'

) wen_ben_s=soup.select(

'#content'

) n=

len(wen_ben_s)

for i in

range

(n):

wen_ben=wen_ben_s[i]

.get_text(

)#去掉字串中的多餘字串

wen_ben=wen_ben.replace(

'    ',''

)#print(wen_ben)

#encoding='utf-8'請檢視鏈結

f.write(wen_ben)

for j in

range

(num)

: f =

open

('e:\\desktop\\武逆\\{}.txt'

.format

(zhang_jie_name_s[j]),

'w+'

, encoding=

'utf-8'

)print(.

format

(zhang_jie_name_s[j]))

download(zhang_jie_s[j]

) f.close(

)print(.

format

(zhang_jie_name_s[j]

))

Python爬取小說

感覺這個夠蛋疼的,因為你如果正常寫的話,前幾次執行沒問題,之後你連 都沒改,再執行就出錯了。其實這可能是網路請求失敗,或者有反爬蟲的東西吧。但這就會讓你寫的時候非常苦惱,所以這這東西,健壯性及其重要!import requests from bs4 import beautifulsoup impo...

python 爬取小說

前些天突然想看一些 可能是因為壓力大,所以就要有補償機制吧。為了節省流量,就想著把內容爬下來,然後就可以在路上看了。於是有了下面的指令碼。usr bin env python coding utf 8 import requests from lxml import etree 為了解決unicod...

python爬取小說

一 準備 安裝 requests pyquery庫 二 使用 定義了search類 初始化時傳入 第一章url 和 名即可 再呼叫all content方法即可 coding utf8 import re import requests from requests.exceptions import...