python定向爬虫实例(四)

功能描述:爬取知乎热榜的排名信息并存储到文件中

程序设计:

  • 获取知乎热榜的HTML文本
  • 解析文本获取排名、标题、热度信息
  • 将获取到的信息存入文件中

代码:

#爬取知乎热榜的排名、标题、热度并保存在文件中
#技术路线:requests----re
#总结:当正则表达式中有(.+,.*)这样的符号时,为了避免匹配到不相关的数据,此时通常采用最小匹配法

import requests,re
def getHTML(url,cookie):
    try:
        r=requests.get(url,headers={'User-Agent':'Mozilla/5.0','Cookie':cookie})
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return ""

def parseHTML(demo,file_path):
    f=open(file_path,"w")
    rank_list=re.findall(r'>\d+</div>',demo)  #排名
    title_list=re.findall(r'HotItem-title\">.+?</h2>',demo)  #标题
    hot_list=re.findall(r'</svg>\d+\s.+?<span',demo)   #热度
    for i in range(len(rank_list)):
        info_dict={}
        try:
            info_dict.update({
                "排名":rank_list[i][1:-6],
                "标题":title_list[i][15:-5],
                "热度":hot_list[i][6:-5],
            })
            f.write(str(info_dict)+'\n')
        except:
            continue
    f.close()
    print("爬取完毕!")

def main():
    url='https://www.zhihu.com/hot'     #知乎热榜
    cookie = '这是一个cookie信息'
    file_path="D://实验结果//知乎热榜.txt"
    demo=getHTML(url,cookie)
    parseHTML(demo,file_path)
main()

效果:

 

posted @ 2019-08-13 22:56  元骑鲸  阅读(200)  评论(0编辑  收藏  举报