【笔记整理】[案例]爬取贴吧并保存网页文件
[案例]爬取贴吧并保存网页文件
import urllib.parse
import requests
class TiebaSpider(object):
def __init__(self, url, name):
self.url = url
self.name = name
def get_data(self, pagesize):
# 带了UA去请求和不带UA去请求返回的内容不一样,证明网站都是有检测UA的,以前做易语言POST都做过了....
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/104.0"
}
url = f"{self.url}{urllib.parse.quote(self.name)}&ie=utf-8&pn={pagesize * 50}"
#print(f"{url=}")
# 如果不想requests使用系统代理,但是你系统上正在运行代理,可以将代理设置为None
proxies = {
# 这个字典的key不可以乱写,必须是http和https
# 如果你的只有http那就只写http代理,htpps也是相同的道理。
# http代理
"http": None,
# https代理
"https": None
}
# 或者修改脚本的环境变量,添加一个NO_PROXY=* 也可以解决问题
# os.environ["NO_PROXY"] = "*"
resp = requests.get(url, headers=headers, )
return resp.content
def save_to_file(self, file_path, data):
with open(file_path, "wb") as f:
f.write(data)
def run(self, size):
for i in range(size + 1):
print(f"正在{self.name}获取第{i + 1}页....")
data = self.get_data(i)
self.save_to_file(f"tieba-{self.name}page{i + 1}.html", data)
if __name__ == '__main__':
import sys
if len(sys.argv) >= 3:
name = sys.argv[1]
pages = int(sys.argv[2])
else:
# 不爬太多了,就爬几页
pages = 2
name = "海贼王"
url = "https://tieba.baidu.com/f?kw="
TiebaSpider(url, name).run(pages)
本文来自博客园,作者:蕝戀,转载请注明原文链接:https://www.cnblogs.com/juelian/p/17559449.html