爬取知乎热榜标题和连接 (python,requests,xpath)

用python爬取知乎的热榜,获取标题和链接。

环境和方法:ubantu16.04、python3、requests、xpath

1.用浏览器打开知乎,并登录

2.获取cookie和User—Agent

3.上代码

 1 import requests
 2 from lxml import etree
 3
 4 def get_html(url):
 5     headers={
 6             ‘Cookie‘:‘‘,
 7             #‘Host‘:‘www.zhihu.com‘,
 8             ‘User-Agent‘:‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36‘
 9             }
10
11     r=requests.get(url,headers=headers)
12
13     if r.status_code==200:
14         deal_content(r.text)
15
16 def deal_content(r):
17     html = etree.HTML(r)
18     title_list = html.xpath(‘//*[@id="TopstoryContent"]/div/section/div[2]/a/h2‘)
19     link_list = html.xpath(‘//*[@id="TopstoryContent"]/div/section/div[2]/a/@href‘)
20     for i in range(0,len(title_list)):
21         print(title_list[i].text)
22         print(link_list[i])
23         with open("zhihu.txt",‘a‘) as f:
24             f.write(title_list[i].text+‘\n‘)
25             f.write(‘\t链接为:‘+link_list[i]+‘\n‘)
26             f.write(‘*‘*50+‘\n‘)
27
28 def main():
29     url=‘https://www.zhihu.com/hot‘
30     get_html(url)
31
32 main()
33
34 import requests  #用requests方式获取
35 from lxml import etree
36
37 def get_html(url):
38     ‘‘‘get_html获取源代码
39     ‘‘‘url:为知乎的网址
40     headers={
41             ‘Cookie‘:‘tgw_l7_route=73af20938a97f63d9b695ad561c4c10c; _zap=f99d7200-6422-498f-8df0-39844d1abd7c; _xsrf=iDbABkOnhb6jA1wvKWFdPqjSeEMav66V; d_c0="ADBhKiaX2Q6PToVYr9fc-9UzlLt0E9RBAEs=|1547900414"; capsion_ticket="2|1:0|10:1547900418|14:capsion_ticket|44:NGVlNTI5Mzk4YTEzNDhlZTk4ZjkxZDg1YTg1OTMxMDg=|cbfda19dac16d7fd90188a21abc0001da68faa88f2013a59b36d497528e922e1"; z_c0="2|1:0|10:1547900438|4:z_c0|92:Mi4xckloRUF3QUFBQUFBOE9FaEpwZlpEaWNBQUFDRUFsVk5GcU5xWEFES2t0M2dVR2lXbWpLVUZHTGp0RDhaU0o1bzln|cc0ba8245e1572aac608d462e9aaabf1b817cb9bd16cbcc819d6f148a8cb009e"; tst=r; q_c1=ca06c3e96ec442179a3409aec6f974dc|1547900440000|1547900440000‘,
42             #‘Host‘:‘www.zhihu.com‘,
43             ‘User-Agent‘:‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36‘
44             }
45
46     r=requests.get(url,headers=headers) #获取网页源码
47
48     if r.status_code==200: #判断状态码是否为200,即判断是否成功获取原网页
49         deal_content(r.text) #调用函数处理网页内容
50
51 def deal_content(r):
52     ‘‘‘
53     deal_content()处理网页内容,并写入txt文件中
54         r为传入参数,是网页内容
55     相关内容写入zhihu.txt中
56     ‘‘‘
57     html = etree.HTML(r) #将网页内容转换为lxml格式
58     title_list = html.xpath(‘//*[@id="TopstoryContent"]/div/section/div[2]/a/h2‘) #获取标题
59     link_list = html.xpath(‘//*[@id="TopstoryContent"]/div/section/div[2]/a/@href‘) #获取连接
60     for i in range(0,len(title_list)):
61         #print(title_list[i].text)
62         #print(link_list[i])
63         with open("zhihu.txt",‘a‘) as f:
64             f.write(title_list[i].text+‘\n‘)
65             f.write(‘\t链接为:‘+link_list[i]+‘\n‘)
66             f.write(‘*‘*50+‘\n‘)
67
68 def main():
69     url=‘https://www.zhihu.com/hot‘
70     get_html(url)
71
72 main()

4.爬取结果

原文地址:https://www.cnblogs.com/emmm/p/10297824.html

时间: 2024-08-03 03:12:28

爬取知乎热榜标题和连接 (python,requests,xpath)的相关文章

爬虫---Beautiful Soup 爬取知乎热榜

前两章简单的讲了Beautiful Soup的用法,在爬虫的过程中相信都遇到过一些反爬虫,如何跳过这些反爬虫呢?今天通过豆瓣网写一个简单的反爬中 什么是反爬虫 简单的说就是使用任何技术手段,阻止别人批量获取自己网站信息的一种方式.关键也在于批量. 反反爬虫机制 增加请求头---headers为了模拟更真实的用户场景 更改IP地址---网站会根据你的IP对网站访问频密,判断你是否属于爬虫 ua限制---UA是用户访问网站时候的浏览器标识,其反爬机制与ip限制类似 模拟帐号登录----通过reque

scrapy 爬取知乎问题、答案 ,并异步写入数据库(mysql)

  python版本  python2.7 爬取知乎流程: 一 .分析 在访问知乎首页的时候(https://www.zhihu.com),在没有登录的情况下,会进行重定向到(https://www.zhihu.com/signup?next=%2F)这个页面, 爬取知乎,首先要完成登录操作,登陆的时候观察往那个页面发送了post或者get请求.可以利用抓包工具来获取登录时密码表单等数据的提交地址. 1.利用抓包工具,查看用户名密码数据的提交地址页就是post请求,将表单数据提交的网址,经过查看

Python爬虫爬取知乎小结

博客首发至Marcovaldo's blog (http://marcovaldong.github.io/) 最近学习了一点网络爬虫,并实现了使用python来爬取知乎的一些功能,这里做一个小的总结.网络爬虫是指通过一定的规则自动的从网上抓取一些信息的程序或脚本.我们知道机器学习和数据挖掘等都是从大量的数据出发,找到一些有价值有规律的东西,而爬虫则可以帮助我们解决获取数据难的问题,因此网络爬虫是我们应该掌握的一个技巧. python有很多开源工具包供我们使用,我这里使用了requests.Be

利用 Scrapy 爬取知乎用户信息

思路:通过获取知乎某个大V的关注列表和被关注列表,查看该大V和其关注用户和被关注用户的详细信息,然后通过层层递归调用,实现获取关注用户和被关注用户的关注列表和被关注列表,最终实现获取大量用户信息. 一.新建一个scrapy项目 scrapy startproject zhihuuser 移动到新建目录下: cd zhihuuser 新建spider项目: scrapy genspider zhihu 二.这里以爬取知乎大V轮子哥的用户信息来实现爬取知乎大量用户信息. a) 定义 spdier.p

爬取知乎Python中文社区信息

爬取知乎Python中文社区信息,https://zhuanlan.zhihu.com/zimei 1 import requests 2 from urllib.parse import urlencode 3 from pyquery import PyQuery as pq 4 from pymongo import MongoClient 5 import json 6 import time 7 8 base_url = 'https://www.zhihu.com/api/v4/co

【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单

写在开头 现在scrapy的安装教程都明显过时了,随便一搜都是要你安装一大堆的依赖,什么装python(如果别人连python都没装,为什么要学scrapy-.)wisted, zope interface,pywin32---现在scrapy的安装真的很简单的好不好! 代码我放github上了,可以参考: https://github.com/hk029/doubanbook 为什么要用scrapy 我之前讲过了requests,也用它做了点东西,([图文详解]python爬虫实战--5分钟做

爬虫爬取千千音乐榜单音乐

最近做了一个爬取千千音乐的demo,免去下载歌曲还要下载对应客户端的麻烦,刚开始接触爬虫,可能写的不太好,求别喷!话不多说,进入正题 1.获取主页信息(获取各个榜单的url) 这里想要说的就是关于千千音乐的登录问题,可能是我在浏览器其他地方登录了百度账号,导致点击退出之后它就会自动又登录上,本来想通过代码登录获取cookie等登录信息的,我也懒得清除缓存了, 索性直接从抓包工具中把请求头全部复制过来,稍微修改一下 # 获取主页 def gethomepage(): # 创建会话 s = requ

爬取知乎某个问题下所有的图片

最近在逛知乎时,看到这么一个问题 最高赞的答案写了个爬虫,把所有的照片都爬下来了. 嘿嘿嘿,技术的力量 正好自己也在学习,加上答主的答案是很久之前的,知乎已经改版了,所以决定自己用Python3写一个练习一下(绝对不是为了下照片).... 设个小小的目标:爬取所有"女性"程序员的照片. 首先是要知道"总的回答数",这个比较简单: url="https://www.zhihu.com/question/37787176"html=requests.

使用requests爬取猫眼电影TOP100榜单

Requests是一个很方便的python网络编程库,用官方的话是"非转基因,可以安全食用".里面封装了很多的方法,避免了urllib/urllib2的繁琐. 这一节使用requests库对猫眼电影的TOP100榜进行抓取. 1 获得页面. 首先确定要爬取的url为http://maoyan.com/board/4,通过requests模块,打印出页面的信息 def get_a_page(url): try: response = requests.get(url) if respon