python爬虫小白的记录1

参考文章:
https://blog.csdn.net/benbird1969/article/details/80623013

#爬取特定章节的正文
# -*- coding:UTF-8 -*-
import requests
from bs4 import BeautifulSoup

#if __name__ == '__main__':
    #设置目标网页 晋江文学城
	target = 'http://www.jjwxc.net/onebook.php?novelid=3325239&chapterid=1'
	#得到网页内容
	req = requests.get(url=target)
	#设置编码方式,本来是显示的乱码,结果发现编码方式不是utf-8,而是gbk,注意是encoding不是coding
	req.encoding = 'gbk'
	#提取text文本,因为我们需要的是小说内容
	html = req.text
	#解析网页,本来是'lxml'但是解析出来是乱码,因此查了之后换成html5lib之后可以正常解析了
	bf = BeautifulSoup(html,'html5lib')
	#找到所有标签是div的class是noveltext的标签下的内容,由于在python中class是关键词,因此加一个_
	texts = bf.find_all('div', class_="noveltext") 
	print(texts[0].text)

关于晋江的爬虫,目前没有好的方法能够排版成笔趣看那样。。。。。。

#爬取特定文章的所有章节目录
# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests

if __name__ == "__main__":
    #设置目标网址,笔趣看
    target = 'https://www.biqukan.com/1_1094/'
    #爬取目标网址
    req = requests.get(url=target)
    #设置编码方式
    req.encoding = 'gbk'
    #提取text
    html = req.text
    div_bf = BeautifulSoup(html,'html5lib')
    #标签去原网页的审查元素里面找
    div = div_bf.find_all('div', class_ = 'listmain')
    #将八个空格换成回车,每一段顶格写
    #html中\xa0表示空格
    print(div[0].text.replace('\xa0'*8,'\n\n'))

但是有一个问题,在去掉<\br>的过程中,为什么直接将空格换成分段就行了,而不是将<\br>换成别的。试了以下代码,不行。

print(div[0].text.replace('<br/>','').replace('\xa0'*8,'\n\n'))

以下代码说明可以将
去掉,但是每一段空格没办法去掉。

print(div[0].text.replace('<br/>','\n\n'))
#获取笔趣看特定小说的所有章节名称和网址
from bs4 import BeautifulSoup
import requests

if __name__ == '__main__':
    server = 'http://www.biqukan.com/'
    target = 'https://www.biqukan.com/1_1094/'
    req = requests.get(url=target)
    req.encoding='gbk'
    html = req.text
    div_bs4 = BeautifulSoup(html,'html5lib')
    div = div_bs4.find_all('div',class_='listmain')
    a_bf = BeautifulSoup(str(div),'html5lib')
    a = a_bf.find_all('a')
    for each in a:
        print(each.string, server + each.get('href'))
  • 主要点:
    设置目标网站→requests获取网页→设置编码方式→得到text→BeatifulSoup解析网页→获取特定标签下的内容(find_all)→使用a.string获取章节名*→获取a标签的href属性(get)
    *: text和string都是bs4类型对象的一个属性,具体见此文章
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值