爬虫学习第一天-模仿01

来源:互联网 发布:淘宝商城珠宝 编辑:程序博客网 时间:2024/06/06 12:26

爬虫就是一个请求-解析-返回的过程,非常有意思。

跟着知乎大神一步步开始学习爬虫。https://zhuanlan.zhihu.com/p/29809609

从小说网站下载小说

URLbiqukan.com/

《一念永恒》小说的第一章http://www.biqukan.net/book/23326/9979822.html

首先,获取HTML的信息。

编程test2.py

import requestsif __name__ == '__main__':    target = 'http://www.biqukan.net/book/23326/9979822.html'    req = requests.get(url=target)    req.encoding='GB18030'    print(req.text) 

其中,

 req.encoding='GB18030'
是处理乱码。


运行后有:


可以和右击选择 '检查' 即可对照代码爬取是否正确(chrome)。




目标是提取正文,需要滤去一些冗余信息。第二步就是解析HTML的信息。选择 Beautiful Soup进行提取。

编程test3.py

from bs4 import BeautifulSoupimport requestsif __name__ == "__main__":     target = 'http://www.biqukan.net/book/23326/9979822.html'     req = requests.get(url = target)     req.encoding='GB18030'     html = req.text     bf = BeautifulSoup(html,"lxml")     texts = bf.find_all('div', class_ = 'panel-body')     print(texts)
有结果:

接下来就是去除div标签名,br标签和一些空格。

编程test4.py,有:

from bs4 import BeautifulSoupimport requestsif __name__ == "__main__":     target = 'http://www.biqukan.net/book/23326/9979822.html'     req = requests.get(url = target)     req.encoding='GB18030'     html = req.text     bf = BeautifulSoup(html,"lxml")     texts = bf.find_all('div', class_ = 'panel-body')     print(texts[0].text.replace('\xa0'*8,'\n\n'))
运行后,有:


find_all匹配的返回的结果是一个列表。提取匹配结果后,使用text属性,提取文本内容,滤除br标签。随后使用replace方法,剔除空格,替换为回车进行分段。

 在html中是用来表示空格的。replace('\xa0'*8,'\n\n')就是去掉下图的八个空格符号,并用回车代替。

target = 'http://www.biqukan.net/book/23326/9979822.html'
该行中,若把9979822改为9979823,即得到小说第2章的内容,要对HTML信息进行观察分类。

然后是要匹配目录,观察到

正文内容全部在目录下。

因此编程test5.py,有:

from bs4 import BeautifulSoupimport requestsif __name__ == "__main__":     target = 'http://www.biqukan.net/book/23326/'     req = requests.get(url = target)     req.encoding='GB18030'     html = req.text     div_bf = BeautifulSoup(html,"lxml")     div = div_bf.find_all('dd', class_ = 'col-md-3')     print(div)
注意对应的
div = div_bf.find_all('dd', class_ = 'col-md-3')

运行后,有:


因为从第1088章开始,所以起初以为结果是有问题的。但是在Pycharm中又是可以的。

问过作者后,


在cmd中运行,


结果是可以的。


今天就学了这么多,接下来要继续跟着大神走完实例,好好学习。

原创粉丝点击