python爬取⽹站静态⽂件_Python—爬取静态⽹页
请注意,本⽂编写于 229 天前,最后修改于 229 天前,其中某些信息可能已经过时。
Python爬⾍—爬取静态⽹页
前期准备windows10中pip的安装:pip 是python标准库中的⼀个包,⽤于管理python标准库中的其他包。get-pip.py //从官⽹上下载pip安装包
python get-pip.py //下载pip
安装request库:根据⽹址,⽤于获取⽹页的HTML的信息pip quest():构造⼀个请求,作为⽀撑以下⽅法的基础⽅法
<():获取HTML⽹页的主要⽅法,对应HTTP的GET安装Beautiful Soup4pip install beautifulsoup4创建⼀个beautifulSoup的对象,对象的参数是html,⽤find_allf⽅法来对html标签来进⾏选择需要的内容
⽹页审查元素(静态⽹站)
打开⽬的⽹页的源代码:判断这个⽹页是静态⽹页还是js加载的动态⽹页,这⾥这讨论静态⽹页
⽹页的编码⽅式:utf-8还是gbk. ⽅法:console标签下的交互式窗⼝输⼊"document.charset"就会返回⽹页的编码⽅式
得到⽬的内容标签的属性
爬取整个⽹页
利⽤requests中的get⽅法来获取html的整个⽹页,如果⽹页是gbk编码,需要转化⼀遍才能输出,否则输出的是乱码.# -*- coding:UTF-8 -*-if __name__ == "__main__":
import requests
target = 'da/a162457/'
req = (target)
html =
print(html)
整理html⽹页
利⽤beautifsoup4中的find_all⽅法来整理⽬标内容,当然也可以⽤正则表达式来进⾏筛选.# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests
if __name__ == "__main__":
target = 'da/a162457/'
req = (target)
html =
bf = BeautifulSoup(html)
texts = bf.find_all('div',class_ = 'yb_text2')
// 获取属性为 yb_text2 div块的内容,并存放在texts中
s = str(texts)
s_replace = s.replace('
','\n')
//对div块中的
writelines使用方法python标签⽤换⾏符来替换
print(s_replace)
爬取整本⼩说
前⾯两步将实现了每⼀章内容的下载,对其实现封装,更改target就可以得到更改就可以分别下载每⼀章然后整合. target=原地址+偏移地
获取下载链接from bs4 import BeautifulSoup
import requests
if __name__ == "__main__":
server = 'da/'
target ='da/a162457/'
req = (target)
html =
bf = BeautifulSoup(html)
texts = bf.find_all('div', 'mulu') //获取属性mulu中的内容
a_bf = BeautifulSoup(str(div[1]) //div[1]中的内容是⽬录,并存放到a_bf
a = a_bf.find_all('a') //获取a_bf中a标签
self.nums = len(a)
for each in a //循环得到a标签中每⼀个href值
self.names.append(each.string)
self.urls.append(self.('href'))
整合上述代码,并写⼊⽂件# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests, sys
"""
类说明:下载《⼩疙瘩》⽹⼩说《同桌凶猛》
"""
class downloader(object):
def __init__(self):
self.server = 'da/'
self.target = 'da/a162457/'
self.names = [] #存放章节名
self.urls = [] #存放章节链接
self.nums = 0 #章节数
"""
函数说明:获取下载链接
"""
def get_download_url(self):
req = (url=self.target)
html =
div_bf = BeautifulSoup(html,'html5lib')
div = div_bf.find_all('div', 'mulu')
a_bf = BeautifulSoup(str(div[1]))
a = a_bf.find_all('a')
self.nums = len(a)
for each in a:
self.names.append(each.string)
self.urls.append(self.server + ('href')) """
函数说明:获取章节内容
"""
def get_contents(self, target):
req = (url=target)
html =
bf = BeautifulSoup(html, 'html5lib')
texts = bf.find_all('div', class_='yd_text2')
s = str(texts)
s_replace = s.replace('
', '\n')
return s_replace
"""
函数说明:将爬取的⽂章内容写⼊⽂件
"""
def writer(self, name, path, text):
write_flag = True
with open(path, 'a', encoding='utf-8') as f:
f.write(name + '\n')
f.writelines(text)
f.write('\n\n')
if __name__ == "__main__":
ul = downloader()
<_download_url()
print('《同桌凶猛》开始下载:')
for i in range(ul.nums):
ul.writer(ul.names[i], '同桌凶猛.txt', ul.get_contents(ul.urls[i])) print(" 已下载:%.3f%%" % float(i*100/ul.nums))
sys.stdout.flush()
print('《同桌凶猛》下载完成')
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论