你是如何开始能写Python爬虫?就这个问题我查看了一下知乎,看到各种大牛写的心得,感觉受益匪浅,于是我有了一种冲动,想把各种大牛回答的心得爬取下来,以后可以细细品味。
首先我们在浏览器输入https://www.zhihu.com/question/21358581,里面可以看到各种大牛的回答

正常的思路

  1. 加载requests包,下载html,
  2. 然后解析html,
  3. 存储数据。
    按照上面的思路我们来写代码看看。
import requestsheaders={'Cookie':'自己填写','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'}
res = requests.get('https://www.zhihu.com/question/21358581',headers=headers)print(res.text)

打印下载的html,发现html的内容并不是所有回答,我这里的只到第一个回答的结尾。


我们通过浏览网页发现,知乎里面的回答,随着你鼠标往下移动,它会不断的加载。这就说明我们浏览的是一个动态网页,按F12,点网络,在XHR里面我们可以看到几个传输数据比较大的json文件。

里面的内容都是我们大牛的回答。

我们把这个json文件翻到最下面,这个是网址是链接的下一个回答。现在我们通过解析json文件获取url和内容。

接下来我们就是撸代码的时间了:

import requests
import json
import re
import time
def get_html(url,headers):res = requests.get(url,headers=headers,timeout=1)res.encoding='utf-8'return res.text
def get_text(data):pattern= '[\u2E80-\u9FFF]+'txt = '\n'.join(re.findall(pattern,data))return(txt)
def get_img_url(data):pattern ='src="(http.*?[jpg|gif])"'urls = set(re.findall(pattern,data))return urls
def down_img(urls,name):i = 0for url in urls:img = requests.get(url).contentif url[-3:] =='jpg':with open(r'照片\\'+name+str(i)+'.jpg','wb') as pic:pic.write(img)else:with open(r'照片\\'+name+str(i)+'.gif','wb') as pic:pic.write(img)i+=1
def down_txt(txt,name):with open(r'文章\\' + name+ '.txt', 'w') as wb:wb.write(txt)
def start(url):headers = {'Cookie': '自己填写','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'}urls=set()old_urls = set()urls.add(url)while True:k = 1if len(urls) !=0:url = urls.pop()old_urls.add(url)res = get_html(url,headers)for i in range(3):try:json_data = json.loads(res)['data'][i]['content']name = json.loads(res)['data'][i]['author']['name']down_img(get_img_url(json_data),name)down_txt(get_text(json_data),name)except:print("结束1")k=0breakjson_url = json.loads(res)['paging']['next']if json_url not in old_urls and k:urls.add(json_url)print(urls)else:print("结束2")breakif __name__ == '__main__':start('https://www.zhihu.com/api/v4/questions/21358581/answers?include=data%5B*%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Crelevant_info%2Cquestion%2Cexcerpt%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cis_labeled%2Cis_recognized%2Cpaid_info%2Cpaid_info_content%3Bdata%5B*%5D.mark_infos%5B*%5D.url%3Bdata%5B*%5D.author.follower_count%2Cbadge%5B*%5D.topics&offset=16&limit=3&sort_by=default&platform=desktop')

爬取的结果:

Python动态网页爬虫之爬取知乎话题回答相关推荐

  1. python爬虫知乎图片_python爬虫(爬取知乎答案图片)

    python爬虫(爬取知乎答案图片) 1.⾸先,你要在电脑⾥安装 python 的环境 我会提供2.7和3.6两个版本的代码,但是本⽂只以python3.6版本为例. 安装完成后,打开你电脑的终端(T ...

  2. Python+Selenium动态网页的信息爬取

    录 一.Selenium 1.1 简介 1.2 配置 二.对百度进行自动化测试 2.1 进入百度搜索界面 2.2 自动填充百度网页的查询关键字并完成自动搜索 三.爬取指定网页的名言 3.1 找到元素 ...

  3. 动态网页的信息爬取(Python+Selenium)

    文章目录 一.Selenium 1.1 简介 1.2 配置环境 二.自动填充百度网页的查询关键字并完成自动搜索 三.爬取一个动态网页的数据 3.1 查看元素 3.2 代码 四.爬取京东网站上的感兴趣书 ...

  4. python爬虫实战(一)--爬取知乎话题图片

    原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...

  5. python爬取知乎话题广场_知乎一共有多少个话题?

    上图可知,它是通过请求POST接口来取得知乎话题数据,接口信息: 其中topic_id指大分类下的id,offset是指偏移量,指每次执行next方法加载的子话题数量,hash_id可以为空我们暂时忽 ...

  6. 菜鸟Python实战-03爬虫之爬取数据

    最近想学习一下爬虫 所以参考了一下网上的代码,并加以理解和整理,好记性不如烂笔头吧. 以下代码的目标网站是豆瓣电影:https://movie.douban.com/top250?start=%22( ...

  7. python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库)

    姓名:隋顺意 博客:Sui_da_xia 微信名:世界上的霸主 本篇文章未涉及猫眼反爬,主要介绍爬取无反爬内容,战反爬内容请去 python战反爬虫:爬取猫眼电影数据 (二)(Requests, Be ...

  8. python战反爬虫:爬取猫眼电影数据 (二)(Requests, BeautifulSoup, MySQLdb,re等库)

    姓名:隋顺意 博客:Sui_da_xia 微信名:世界上的霸主 本文主要介绍破解反爬,可以先去上一篇观看爬取无反爬内容 python战反爬虫:爬取猫眼电影数据 (一)(Requests, Beauti ...

  9. python战反爬虫:爬取猫眼电影数据 (一)

    非常荣幸邀请到 赛迪人工智能大赛(简称AI世青赛)全球总决赛银奖的获得者 隋顺意 小朋友为本公众号投稿,隋小朋友虽然小小年纪,但编程能力已经比大多数大学生强非常多了,欢迎大家关注,捧场. 姓名:隋顺意 ...

最新文章

  1. 如何使用日志进行程序调试_如何使用日志节省调试时间
  2. SAP MM 创建退货类型的公司间STO,报错 -No delivery type for returns processing assigned to item 00010-
  3. Eclipse+Maven+SpringMVC+Mybatis+MySql搭建总结
  4. python中try Except抛出异常使用方法
  5. [OS复习]操作系统综述1
  6. 零基础学python裴帅帅_人工智能时代,爬虫如此简单。
  7. Spring Boot之HelloWorld
  8. php pdo 关闭,php pdo预处理
  9. 服务器多网站布置,如何在一台服务器上实现多个web站点的方法
  10. linux导报命令,LINUX下安装与卸载DM8
  11. popwindow+动画
  12. [转载]IIS 6.0配置HTTP压缩的步骤
  13. 看似毫不相干,哲学与机器学习竟有如此大的交集?
  14. create-react-app 支持多入口
  15. Asp.Net中的正则表达式问题可以在此提问,今后大家一起研究!贴出基本语法参考...
  16. java标签文本框,Java_3 文本B01.txt:创建带有标签和文本框的窗体 联合开发网 - pudn.com...
  17. python最新版安装图集_[python] plist图集拆分小图
  18. signature=daa3bbe3ad9a7c162ba9d98f8d9e7530,来用百度密语吧!!!
  19. Android入门基础教程1
  20. 微pe工具箱 系统安装教程_微pe工具箱怎么装系统

热门文章

  1. JAVA程序员面试宝典3
  2. CY7C68013A 使用keil 5 c51 开发
  3. HSA-Cy3;Cy3标记人血清白蛋白;用于免疫荧光检测、流式细胞分析和药物小分子与生物大分子相互作用的分析测定。
  4. LeetCode322.零钱兑换(一)
  5. 如何利用生产管理系统提高粉末治金工业的生产调度能力
  6. DBeaver 设置护眼的背景色 详细步骤
  7. lnk快捷方式无法打开解决方法
  8. MATLAB函数专题——基础篇
  9. FRM模型二:时间序列建模
  10. IP协议——IPv4首部