网页源码,爬取书本的简介和目录:

这是简介标签内的内容:
<textarea style=" background-color:#F0EFE2; border:0px;overflow:hidden;" cols="1" rows="1" id="txtareAuthor6">《周易》
是一部中国古哲学书籍,是建立在阴阳二元论基础上对事物运行规律加以论证和描述的书籍,其对于天地万物进行性状归类,天干地支五行论,甚至精确到可以对事物的未来发展做出较
为准确的预测。https://so.gushiwen.org/guwen/book_6.aspx</textarea>
先尝试取出简介内容:
>>> url='https://so.gushiwen.org/guwen/book_6.aspx'
>>> r=requests.get(url)
>>> data=r.text
>>> p=r'<textarea[^>]*?id="txtareAuthor6">(.*?)https.*aspx*?</textarea>'
>>> r=re.findall(p,data)
>>> r
['《周易》是一部中国古哲学书籍,是建立在阴阳二元论基础上对事物运行规律加以论证和描述的书籍,其对于天地万物进行性状归类,天干地支五行论,甚至精确到可以对事物的未来
发展做出较为准确的预测。']
import requests
import re
from bs4 import BeautifulSoup
# 获取书本的信息:简介和目录列表
# demo_url:https://so.gushiwen.org/guwen/book_6.aspx
def get_book(name, url):
book = Book(name, url)
if url == '':
return None
headers = {'user_agent': 'Mozilla/5.0'}
with requests.get(url, headers=headers) as r:
if r.status_code != 200:
return None
text = r.text
if len(text) == 0:
return None
soup = BeautifulSoup(text, 'lxml')
p = r'<textarea[^>]*?id="txtareAuthor6">(.*?)https.*aspx*?</textarea>'
ret = re.findall(p, text)
if len(ret) > 0:
book.title = ret[0]
bookcont = soup.find('div', class_='bookcont')
if bookcont == None:
return book
tab_bookcont = bookcont.findAll('a')
if len(tab_bookcont) == 0:
return book
for tab in tab_bookcont:
t = {'name': tab.text, 'url': tab.get('href')}
book.index.append(t)
return book