#在爬蟲爬取的過程中,需要判斷傳入的鏈結對應的是靜態網頁還是動態網頁,然後選擇不同的**對其進行爬取
#因為靜態爬取比較快,所以當網頁為靜態網頁時就不需要呼叫動態爬取的**了,
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...