用requests库爬取百度贴吧.
要求:
百度贴吧名字和爬取的页码数需要用户自己输入
运行结果要有截图.截图上要看到生成的文件名.截图上要有自己的姓名
代码用纯文本复制.作业要求
完整代码如下
import requests
import urllib
import urllib.parse
import urllib.request
def load_page(full_url, file_name):
'''
作用:根据 url发送请求,获取服务器响应文件
:param full_url: 需要爬取的url地址
:param file_name:
:return:
'''
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"}
# request=urllib.request.Request(full_url,headers=headers)
return requests.get(full_url,headers=headers)
def write_page(html, file_name):
'''
作用:将html内容写入本地文件
:param html:
:param file_name:
:return:
'''
print("正在保存"+file_name)
with open(file_name,'w',encoding='utf-8') as file:
file.write(html.text)
def tieba_spider(url, begin_page, end_page):
'''
作用:爬虫调度器,负责组合每个页面的url
:param url: 贴吧url的前半部分
:param begin_page: 起始页码
:param end_page: 结束页
:return:
'''
for page in range(begin_page,end_page+1):
pn=(page-1)*50
file_name="第"+str(page)+"页.html"
full_url=url+"&pn="+str(pn)
html=load_page(full_url,file_name)
write_page(html,file_name)
if __name__=="__main__":
kw=input("请输入需要爬取的贴吧名:")
begin_page=int(input("请输入起始页:"))
end_page=int(input("请输入结束页:"))
url='http://tieba.baidu.com/f?'
key=urllib.parse.urlencode({"kw":kw})
#组合后的url示例:http://tieba.baidu.com/f?kw=lol
url=url+key
tieba_spider(url,begin_page,end_page)
NOTE:暂未解决所有疑问,正在学习ing,后续会发布解释以及注解。




文章有(2)条网友点评
量的循环使人人都是黑lv
@ lv的 力量
我tm直接GNYD!