1 Star 0 Fork 0

唐宋/PyTest

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
baiduTiebaTest.py 2.02 KB
一键复制 编辑 原始数据 按行查看 历史
唐宋 提交于 2024-03-10 17:34 . 创建python仓库
"""
根据输入贴吧名字爬取指定页数的网页保存到本地 已经验证
"""
from urllib import request, parse
import time
import random
from webbrowser import Mozilla
def save_html(filename, html):
"""数据存储"""
with open(filename, 'w', encoding='utf-8') as f:
f.write(html)
class BaiduTiebaSpider:
def __init__(self):
"""定义常用的变量,成员变量"""
self.url = 'http://tieba.baidu.com/f?kw={}&pn={}'
self.headers = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'}
def get_html(self , url):
"""获取响应内容"""
req = request.Request(url=url, headers=self.headers)
res = request.urlopen(req)
# 出现异常报错是由于设置了decode()方法的第二个参数errors为严格(strict)形式造成的,因为默认就是这个参数,将其更改为ignore等即可
html = res.read().decode(encoding='utf-8', errors='ignore')
return html
def parse_html(self):
"""解析提取数据的函数"""
pass
def run(self):
"""程序入口函数"""
name = input('请输入贴吧名:')
start = int(input('请输入开始页:'))
end = int(input('请输入终止页:'))
params = parse.quote(name)
# 1、拼接URL地址
for page in range(start, end + 1):
pn = (page - 1) * 50
url = self.url.format(params, pn)
# 发送请求,解析,保存
html = self.get_html(url)
filename = 'F:/pythonPro/firstPro/downFiles/BaiduTieba/{}_第{}页.html'.format(name, page)
save_html(filename, html)
# 终端打印提示
print('第%d页抓取成功' % page)
time.sleep(random.randint(1, 3)) # 这里是为了减少频率,并且像人,频率固定也可能会被服务器识别为异常
if __name__ == '__main__':
spider = BaiduTiebaSpider()
spider.run()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/liuqinsong/py-test.git
git@gitee.com:liuqinsong/py-test.git
liuqinsong
py-test
PyTest
master

搜索帮助