最新消息:最新信息可以到系统基本设置里填写,如果不想要这一栏可以修改head.htm,将第53行到55行删除即可

Python爬虫入门教程 26

技巧资源 dedesos.com

昨天写了知乎文章图片爬取器的一部分代码,针对知乎问题的答案json进行了数据抓取,博客中出现了部分写死的内容,今天把那部分信息调整完毕,并且将图片下载完善到代码中去。

首先,需要获取任意知乎的问题,只需要你输入问题的id,就可以获取相关的页面信息,比如最重要的合计有多少人回答问题。
问题id为如下标红数字
29024583



编写代码,下面的代码用来检测用户输入的是否是正确的id,并且通过拼接url去获取该问题下面合计有多少答案。

import requests
import re
import pymongo
import time
database_ip = 127.0.0.1 
database_port = 27017
database_name = sun 
client = pymongo.mongoclient
db = client.sun
db.authenticate
collection = db.zhihuone # 准备插入数据
base_url = https://www.zhihu.com/question/{} 
def get_totle_answers:
 headers = {
 user-agent : 需要自己补全 mozilla/5.0  
 with requests.session as s:
 with s.get,headers=headers,timeout=3) as rep:
 html = rep.text
 pattern =re.compile / )
 s = pattern.search
 print[0]))
 return s.groups[0]
if __name__ == __main__ :
 # 用死循环判断用户输入的是否是数字
 article_id = 
 while not article_id.isdigit:
 article_id = input
 totle = get_totle_answers
 if int 0:
 zhi = zhihuone
 zhi.run
 else:
 print

完善图片下载部分,图片下载地址在查阅过程中发现,存在json字段的content中,我们采用简单的正则表达式将他匹配出来。细节如下图展示

在这里插入图片描述

编写代码吧,下面的代码注释请仔细阅读,中间有一个小bug,需要手动把pic3修改为pic2这个地方目前原因不明确,可能是我本地网络的原因,还有请在项目根目录先创建一个imgs的文件夹,用来存储图片

 def download_img:
 ## 下载图片
 for item in data[ data ]:
 content = item[ content ]
 pattern = re.compile /noscript )
 imgs = pattern.findall
 if len 0:
 for img in imgs:
 match = re.search , img)
 download = match.groups[0]
 download = download.replace # 小bug,pic3的下载不到
 print, end= )
 try:
 with requests.session as s:
 with s.get as img_down:
 # 获取文件名称
 file = download[download.rindex + 1:]
 content = img_down.content
 with open, wb+ ) as f: # 这个地方进行了硬编码
 f.write
 print
 except exception as e:
 print

    网友最新评论