Python爬取知乎回复中的图片(跳过登录)

主要思路:

利用Chrome的selenium登录url,使用鼠标滚动,明确显示回复内容中的图片显示出来。抓取图片地址。

import requests
from lxml import etree
from selenium import webdriver
import time

class Spider(object):
    def __init__(self):
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36"
        }
        self.driver = webdriver.Chrome()
    # 下载保存图片
    def request_pic(self, name, url):
        response = requests.get(url, headers=self.headers)
        with open('{}.jpg'.format(name), 'wb') as f:
            f.write(response.content)
    # 登录url获取图片地址
    def run(self, url):
        self.driver.get(url)
        time.sleep(3)
        # 根据xpath路径得到所有图片标签
        figure_list = self.driver.find_elements_by_xpath(r"//span[@class='RichText ztext CopyrightRichText-richText']")
        # 设置滚动指定高度初始值
        js_num = 2000
        for i in range(1, 500):
            # 设置js语句(向下滚动2000高度)
            js = "var q=document.documentElement.scrollTop={}".format(js_num)
            self.driver.execute_script(js)
            # 获取标签内src值=图片地址
            pic_url = figure_list[0].find_element_by_xpath(r"./figure[{}]/img".format(i)).get_attribute("src")
            time.sleep(3)
            print(pic_url)
            # 下次滚动高度
            js_num += 2000
            self.request_pic(i, pic_url)


url = "https://www.zhihu.com/question/373960489/answer/1032475670"
myspider = Spider()
myspider.run(url)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值