BeautifulSoup的基本用法
# -*- coding:UTF-8 -*-
from urllib import request
from bs4 import BeautifulSoup
import re
import sys if __name__ == "__main__":
#创建txt文件
file = open('一念永恒.txt', 'w', encoding='utf-8')
#一念永恒小说目录地址
target_url = 'http://www.biqukan.com/1_1094/'
#User-Agent
head = {}
head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
target_req = request.Request(url = target_url, headers = head)
target_response = request.urlopen(target_req)
target_html = target_response.read().decode('gbk','ignore')
#创建BeautifulSoup对象
listmain_soup = BeautifulSoup(target_html,'lxml') #搜索文档树,找出div标签中class为listmain的所有子标签
chapters = listmain_soup.find_all('div',class_ = 'listmain')
#使用查询结果再创建一个BeautifulSoup对象,对其继续进行解析
download_soup = BeautifulSoup(str(chapters), 'lxml')
#计算章节个数
numbers = (len(download_soup.dl.contents) - 1) / 2 - 8
index = 1
#开始记录内容标志位,只要正文卷下面的链接,最新章节列表链接剔除
begin_flag = False
#遍历dl标签下所有子节点
for child in download_soup.dl.children:
#滤除回车
if child != '\n':
#找到《一念永恒》正文卷,使能标志位
if child.string == u"《一念永恒》正文卷":
begin_flag = True
#爬取链接并下载链接内容
if begin_flag == True and child.a != None:
download_url = "http://www.biqukan.com" + child.a.get('href')
download_req = request.Request(url = download_url, headers = head)
download_response = request.urlopen(download_req)
download_html = download_response.read().decode('gbk','ignore')
download_name = child.string
soup_texts = BeautifulSoup(download_html, 'lxml')
texts = soup_texts.find_all(id = 'content', class_ = 'showtxt')
soup_text = BeautifulSoup(str(texts), 'lxml')
write_flag = True
file.write(download_name + '\n\n')
#将爬取内容写入文件
for each in soup_text.div.text.replace('\xa0',''):
if each == 'h':
write_flag = False
if write_flag == True and each != ' ':
file.write(each)
if write_flag == True and each == '\r':
file.write('\n')
file.write('\n\n')
#打印爬取进度
sys.stdout.write("已下载:%.3f%%" % float(index/numbers) + '\r')
sys.stdout.flush()
index += 1
file.close()
>>> for link in soup.find_all('a'):
... print(link.get('href'))
#用于爬取a标签的链接
Beautiful Soup 4.4.0 文档链接:http://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/
已下文章来自博客园大佬:http://www.cnblogs.com/sakura3/p/8460224.html(为了复习方便,搬一下,谢谢)
爬小说:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
from bs4 import BeautifulSoup
# get_url_list 获取所有章节的URL,在一个list里
def get_url_list(url):
content = requests.get(url).content #获取页面内容
soup = BeautifulSoup(content,'lxml') #Beautifulsoup 实例化对象
url_list = [] #空的url_list 数组
# urls = soup.find('div',{'id':'list'}).find('dl').find_all('dd')
urls = soup.select('#list > dl > dd > a') # 根据页面选择到URL ,还可以urls = soup.find('div',{'id':'list'}).find('dl').find_all('dd')
for i in urls: #遍历里面的每一章的URL
i = i.get('href') #获取URL
# print(i)
i = 'http://www.biquge.com.tw' + i #分析文章组成,形成最终的URL
url_list.append(i) #添加到url_list 里面去
# print (url_list)
return url_list
# 获取这一章的内容
def get_data(url):
content = requests.get(url).content
soup = BeautifulSoup(content, 'lxml')
f = open(r'C:\Users\HBX\Documents\staudy\HMXX.txt','a+',encoding='utf-8') #不加utf-8 会有编码报错
text_name = soup.find('div',{'class':'bookname'}).find('h1').text #获得章节名字
# text_content = soup.select('#content')
text_content = soup.find('div',{'id':'content'}).get_text() #获得章节内容 ,还有一种select css 选择的获取章节内容的方式
book =text_name+ '\r\n' + text_content #整体的一章
# print(book)
f.write((book)+'\r\n') #换行写入
f.close() #关闭文件
# for x in text_content:
# a = x.text.replace('readx();', '')
# print(a) if __name__ =='__main__':
url = 'http://www.biquge.com.tw/18_18049/' #笔趣阁的小说目录页面
url_list = get_url_list(url) #获取了所有的url
for i in url_list: # 循环一章url
get_data(i) #获取文章内容
BeautifulSoup的基本用法的更多相关文章
- bs4.BeautifulSoup的基础用法
导入模块 from bs4 import BeautifulSoup soup = BeautifulSoup(html_doc,"html.parser") 下面看下常见的用法 ...
- PYTHON 爬虫笔记五:BeautifulSoup库基础用法
知识点一:BeautifulSoup库详解及其基本使用方法 什么是BeautifulSoup 灵活又方便的网页解析库,处理高效,支持多种解析器.利用它不用编写正则表达式即可方便实现网页信息的提取库. ...
- Beautifulsoup模块基础用法详解
目录 Beautifulsoup模块 官方中文文档 介绍 基本使用 遍历文档树 搜索文档树 五种过滤器 **find_all( name , attrs , recursive , text , ** ...
- #爬虫必备,解析html文档----beautifulsoup的简单用法
#出处:http://mp.weixin.qq.com/s?__biz=MjM5NzU0MzU0Nw==&mid=201820961&idx=2&sn=b729466f334d ...
- Python BeautifulSoup库的用法
BeautifulSoup是一个可以从HTML或者XML文件中提取数据的Python库,它通过解析器把文档解析为利于人们理解的文档导航模式,有利于查找和修改文档. BeautifulSoup3目前已经 ...
- BeautifulSoup的简单用法
官方文档加载比较慢(估计是我党的原因) https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#find-parents ...
- 孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3
孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步了 ...
- 孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2
孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步 ...
- 孤荷凌寒自学python第六十八天学习并实践beautifulsoup模块1
孤荷凌寒自学python第六十八天学习并实践beautifulsoup模块1 (完整学习过程屏幕记录视频地址在文末) 感觉用requests获取到网页的html源代码后,更重要的工作其实是分析得到的内 ...
随机推荐
- 通过命令窗口控制mysql服务的启动与停止
mysql服务的启动: 以管理员的身份运行cmd命令窗口,输入命名 net start mysql 如果不是以管理员的身份运行cmd,会提示如下错误 mysql服务的停止: 以管理员的身份运行cmd命 ...
- 1、jQuery 为什么要学习jQuery?
<jQuery精品教程视频/资料/19-jQuery第一天/01-教学资料/笔记/preview/笔记.html> [01-让div显示与设置内容.html] 使用javascript开发 ...
- MySql cmd下的学习笔记 —— 有关建立数据库的操作(连接Mysql,建立数据库,删除数据库等等)
(01) 连接数据库 mysql -uroot -p 之后输入密码 ******.(由于我的密码设置的是111,所以输入的是111) (02) 退出数据库 exit (03) 查看数据库 show d ...
- Oracle Audit 审计功能的认识与使用
1.Audit的概念 Audit是监视和记录用户对数据库进行的操作,以供DBA进行问题分析.利用Audit功能,可以完成以下任务: 监视和收集特定数据库活动的数据.例如管理员能够审计哪些表被更新,在某 ...
- openstack-----各种系统镜像制作
本章内容 1.centos镜像制作 2.windows镜像制作 3.ubunt镜像制作 一.centos7镜像制作 1.检查系统是否支持kvm: egrep "(vmx|svm)&q ...
- 快速搭建ELK日志分析系统
一.ELK搭建篇 官网地址:https://www.elastic.co/cn/ 官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/ ...
- Excel删除重复值
Sub Uniquedata()Dim rCell As Range'创建Dictionary对象Set d = CreateObject("Scripting.Dictionary&quo ...
- Serv-U日志文件保存设置【转】
Serv-U的日志默认是不保存在本地的,但是大多数企业对于文件传输是有审计需求的,所以这里我们可以手动配置Serv-U的日志保存到本地文件. 首先打开“域活动”,选择“设置”,在“记录到文件”处设置日 ...
- PHP相关学习
PHP环境安装 使用wamp一键集成环境.在文件httpd-vhosts.conf 本地配置 本地存储的位置,即index.php所在的位置()路由重定向 配置完环境需要重新启动wamp!!!!!! ...
- 带你十分钟快速构建好 SpringBoot + SSM 框架
目前最主流的 java web 框架应该是 SSM,而 SSM 框架由于更轻便与灵活目前受到了许多人的青睐.而 SpringBoot 的轻量化,简化项目配置, 没有 XML 配置要求等优点现在也得到了 ...