今天上午忽然想自己用python写一个网络爬虫,爬一本小说,在顶点这个网站,网址:https://www.23us.so/,我选的是一本名叫《三寸人间》的书做例子,原本以为会很简单,但没想到搞了一下午,最后还是在网上找了资料才解决,先贴一部分网站源码:
<code>
<title>三寸人间最新章节_三寸人间全文阅读 - 顶点小说网/<title>
<link>
/<code>
| |
-> ->三寸人间最新章节
更新时间:2019-10-02 14:48:20
推荐阅读:
<table>/<table> 是不是看的有些头疼?而且最重要的是每个章节列表的网址没有规律,虽然只是最后六七位数字不一样,但是我找半天最后的数字的规律也没有找到,网上有一张一张爬的,而且实现的也很明白,但是我最初的思路是在目录页获取所有的章节地址,然后一章一章的去下载,开始没有思路,但是后来想了一个本办法,就是下面的代码:
<code>
import requests
from bs4 import BeautifulSoup
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
ls = []
cl=[]
def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = 'utf-8'
return r.text
except:
return ""
def get_maninfo(url):
try:
res=requests.get(url,headers=headers)
res.raise_for_status()
res.encoding = res.apparent_encoding
soup=BeautifulSoup(res.text,'html.parser')
ceshi=soup.find_all('a')
for i in ceshi:
try:
href = i.attrs['href']
ls.append(href)
except:
continue
print(len(ls))
except:
return ""
def getText(soup):
a = str(soup.find_all('dd',{'id':'contents'}))
a=a.replace('[- ','')
/<code>
return a.replace('
','')
def getHead(soup):
a = str(soup.find_all('h1')).replace('','')
','')
return a.replace('
def putText(text,h1):
dingdian = open("D:\\pythonapk\\ceshi\\三寸人间.txt","a",encoding = "utf-8")
dingdian.write(h1 + '\\n')
dingdian.write(text+'\\n\\n\\n\\n')
dingdian.close
def man():
url="https://www.23us.so/files/article/html/0/43/index.html"
get_maninfo(url)
for x in range(28, len(ls)):
cl.append(ls[x])
for url in cl:
r = getHTMLText(url)
soup = BeautifulSoup(r, "html.parser")
putText(getText(soup), getHead(soup))
man()结果比较成功,当然速度比较慢
"
分享到:
閱讀更多 知識技術與人生 的文章
相關文章: