用python写小说_使用python书写的小说爬虫

#小说的爬取 爬取的是书名的所有列表 根据书名或者作者进行搜索的列表

importrequestsimportrandomfrom bs4 importBeautifulSoup#定义一个存储书的列表

book_list=[];#定义一个对象存储内容

classBook:

book_image= '';

book_name= '';

book_author= '';

book_href= '';

book_update_name= '';

book_update_name_href= '';deftostring(self):return """图片地址=%s

书名=%s

书作者=%s

书链接=%s

最新章节名称=%s

最新章节地址=%s""" %(self.book_image,self.book_name,self.book_author,self.book_href,self.book_update_name,self.book_update_name_href);

baseurl= "https://www.biqukan.com";

input_book_name= input("请输入书名称==>");

header= [{'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36'},{'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'},{'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'},{'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'},{'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)'}]#header 是用来伪装成浏览器发送请求,一般加上最好,header 信息可以通过浏览器查看,也可在网上搜索得到。

req = requests.get(baseurl + '/s.php?ie=gbk&s=2758772450457967865&q=' + input_book_name,headers = header[random.randint(0,4)]) #向目标网站发送 get 请求

result =req.content

result= result.decode('gbk') #查看网页源代码 看到 charset=gbk,即网页是用的 gbk 编码,故要用 gkb 的编码方式来解码,否则中文就会乱码。

#print(result); #得到内容

req_parser = BeautifulSoup(result,"html.parser");

bookbox= req_parser.find_all('div',class_ ='bookbox');#a_bf = BeautifulSoup(str(div),"html.parser"); # 进行进一步的字符解析因为获取要素类型的值时必须进行这一步

#对当前的结果进行遍历得到想要的数据

for result inbookbox:

resu= BeautifulSoup(str(result),"html.parser");

book_image= resu.find_all('img')[0].get('src'); #得到书名的图片

book_name = resu.h4.a.string; #得到书的名称

book_author = resu.find('div',class_ = 'author').string; #得到书的作者

book_href = resu.h4.a.get('href'); #得到书的链接

book_update_name = resu.find('div',class_ = 'update').a.string; #最新章节名称

book_update_name_href = resu.find('div',class_ = 'update').a.get('href'); #z最新章节链接

book =Book();

book.book_image= baseurl +book_image;

book.book_name=book_name;

book.book_author=book_author;

book.book_href= baseurl +book_href;

book.book_update_name=book_update_name;

book.book_update_name_href= baseurl +book_update_name_href;

book_list.append(book);

with open('./book.txt','w+') as fw: #打开文件

for i inbook_list:

fw.write("\n")

fw.write("***********************************************************************************************")

fw.write("\n")

fw.write(i.tostring())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值