小说爬虫
本帖最后由 TzzFly 于 2019-1-30 15:10 编辑今天下雨了在家没事干,突然想看小说了,就把以前写的一个爬虫拿出来改了一下还搞他 http://www.biquyun.com 毕竟好搞嘛
利用抓包工具抓包,发现使用它的搜索功能是对url进行了编码,搜索发出的请求是 "http://www.biquyun.com/modules/article/soshu.php?searchkey=+"要搜索的内容的gb2312编码
比如我要搜索“逆天邪神”它的请求地址是“http://www.biquyun.com/modules/article/soshu.php?searchkey=+%C4%E6%CC%EC%D0%B0%C9%F1”
通过from urllib.request import quote quote(name,encoding = "gbk")可实现对编码
先用requests模块发个get请求发现 response乱码, html = response.text.encode('iso-8859-1').decode('gbk')文本是中文的时候,获取的数据是iso8859-1编码的,进行数据操作时会出现乱码。
然后把获取到的内容处理一下 我是直接把它复制到一个字符串里边 然后测试一下 就简单的用 a ,b 什么的表示了
soup = BeautifulSoup(a,"lxml")
a = soup.find_all('div',id="list")
soup = BeautifulSoup(str(a),"lxml")
b = soup.find_all("a") 这时候输出是这样的<a href="/4_4027/2348399.html">第8章 大婚之夜</a>
for a in b:
print (a.string,'http://www.biquyun.com/'+a.get("href")) 利用使用a.get("href")方法获取herf 的属性值,a.string获取章节名称
然后开始获取内容 随便找一章把内容抓下来测试还是a ,b 别嫌弃
soup = BeautifulSoup(a,"lxml")
a = soup.find_all('div',id="content") 内容都在这里 然后
a.text.replace('\xa0'*8,'\n\n') 这里的text主要是去除<br/>标签 replace是删除空格
接着写入文本
然后放到一块:lol整理一下,一个简单的爬虫就做好了我代码写得并不好看,你们要是觉得哪里不python了告诉我
很乐意接受建议 (看小说当然是手机好用了,所以可以下载一个termux,然后安装个python,挂个软链接到某文件夹)
# -*- coding: utf-8 -*-import requests
from bs4 import BeautifulSoup
from urllib.request import quote
class downloader(object):
def __init__(self):
self.names = [] #存放章节名
self.urls = [] #存放章节链接
self.nums = 0 #章节数
def url_gbk(self,name):
url1 = "http://www.biquyun.com/modules/article/soshu.php?searchkey=+"
url = url1 + quote(name,encoding = "gbk")
return url
def html(self,url):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20130405 Firefox/22.0'}
response = requests.get(url,headers = headers)
html = response.text.encode('iso-8859-1').decode('gbk')
soup = BeautifulSoup(html,"lxml")
a = soup.find_all('div',id="list")
soup = BeautifulSoup(str(a),"lxml")
b = soup.find_all("a")
self.nums = len(b)
for a in b:
self.names.append(a.string)
self.urls.append('http://www.biquyun.com/'+a.get("href"))
def reorganize(self, target):
r = requests.get(url = target)
a = r.text
soup = BeautifulSoup(a,"lxml")
text = soup.find_all('div',id="content")
texts = text.text.replace('\xa0'*8,'\n\n')
return texts
def writer(self, name, path, text):
write_flag = True
with open(path, 'a', encoding='utf8') as f:
f.write(name + '\n')
f.writelines(text)
f.write('\n\n')
if __name__ == "__main__":
name = input("小说名称:")
dl = downloader()
url = dl.url_gbk(name)
dl.html(url)
print(name +'开始下载:')
for i in range(dl.nums):
print(dl.names)
dl.writer(dl.names, name +'.txt', dl.reorganize(dl.urls))
print(name +'下载完成')
欢迎分析讨论交流,吾爱破解论坛有你更精彩! 逆天邪神 看不懂,小白一个... 求大神教下这类爬虫代码具体要怎么使用?好多爬虫代码真的有用,可惜我是真小白,不会用。 你让我们伸手党怎么办 能教教我python不,厚脸皮问一下:$qqq 你们的手机是真的牛逼,什么都能做 rxxcy 发表于 2019-1-30 16:18
你们的手机是真的牛逼,什么都能做
手机当然是用来折腾了,越折腾越开心
页:
[1]