用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!